mongodb分为管理员用户和普通用户,并且还有个验证库,建立用户时use到的库(验证库),信息就存储在admin数据库下。
在使用用户时,要加上验证库才能登录,对于管理员用户,必须在admin下创建,验证用户返回值为1即成功。
1、创建管理员用户
语法:
user:用户名
pwd:密码
roles:
    role:角色名
    db:作用对象
常用role:root、readWrite、read
> use admin
switched to db admin
> db.createUser({
... user:"root",
... pwd:"yy123456",
... roles:[{role:"root",db:"admin"}]
... }
... )
Successfully added user: {
    "user" : "root",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
> db.auth('root','yy123456')
1
> 
> db.createUser({user:"root",pwd:"yy123456",roles:[{role:"root",db:"admin"}]})
2、创建普通用户
> use test
switched to db test
> db.createUser({
... user:"test_1",
... pwd:"123456",
... roles:[{role:"readWrite",db:"test"}]
... })
Successfully added user: {
    "user" : "test_1",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
} > db.auth('test_1','123456')
 1
 >
3、登录
#本地登录
mongo -uroot -pyy123456 admin
mongo -utest_1 -p123456 test
#远程登录
mongo -uroot -pyy123456 ip+端口/admin
mongo -utest_1 -p123456 ip+端口/test
4、删除用户
以root用户登录,删除后use到admin库,查看所用用户信息
> use test
switched to db test
> db.dropUser("test_1")
true
> db.auth('test_1','123456')
Error: Authentication failed.
0
> use admin
switched to db admin
> db.system.users.find().pretty()
{
    "_id" : "admin.root",
    "userId" : UUID("31cc514b-00b2-434b-8d78-2dcd450f3cf2"),
    "user" : "root",
    "db" : "admin",
    "credentials" : {
        "SCRAM-SHA-1" : {
            "iterationCount" : 10000,
            "salt" : "WVVZcAR1PnSjQLTAMolnYA==",
            "storedKey" : "m5P8eMDZ7NvmpjAYH8FGTO6+k9k=",
            "serverKey" : "B1mD3dfNpvlza7eO5g80MovmUaA="
        },
        "SCRAM-SHA-256" : {
            "iterationCount" : 15000,
            "salt" : "eivTZLkntjrnQllzhE8uUHCWtNdVpcvMT8Pysg==",
            "storedKey" : "9NjJIph+k4WOnC+Fa/Th1LIzRbItK/R33EOZX8DC3+0=",
            "serverKey" : "eF3eieOZvDEzQ0fMZlnOy1q0zXSwcD/5FeTzM7jIbFM="
        }
    },
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
>
5、用户权限
| 常用角色 | 权限说明 | 
| Read | 允许用户读取指定数据库 | 
| readWrite | 允许用户读写指定数据库 | 
| dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile | 
| userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 | 
| clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 | 
| readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 | 
| readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 | 
| userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 | 
| dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 | 
| root | 只在admin数据库中可用。超级账号,超级权限 | 
    
    










