再次连接到MongoDB,执行命令时显示无权限了:

    1. 2017-03-08T10:22:53.340+0800 E QUERY [thread1] Error: listDatabases failed:{
    2. "ok" : 0,
    3. "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    4. "code" : 13
    5. } :

    然后停掉授权模式,重新启动mongod,添加用户,分配权限:

    再次连接到Mongodb,查看:

    1. 2017-03-08T10:26:43.075+0800 I CONTROL [main] Hotfix KB2731284 or later update is not installed, will zero-out data files
    2. connecting to: test
    3. > show dbs
    4. admin 0.000GB
    5. local 0.000GB
    6. test 0.013GB
    7. user_restore 0.000GB

    查看admin下的system.users可以看到用户信息:

    readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabase 针对所有数据库的用户管理权限dbAdminAnyDatabase 针对所有数据库的管理权限

    单个数据库的角色控制

    主要是role改成了 dbOwner,

    命令如下所示:

    1. > db.createUser({user:'lin',pwd:'123',roles:[{role:'dbOwner',db:'user_restore'}]})
    2. "user" : "lin",
    3. "roles" : [
    4. {
    5. "role" : "dbOwner",
    6. "db" : "user_restore"
    7. }
    8. ]

    然后在admin库中授权,然后切换到user_restore即可:

    dbAdminuserAdmin

    复制集与集群的权限控制

    复制集以及集群的权限控制稍微要麻烦一些

    复制集中:

    1. 创建一个包含6个字符以上的文件,并被部署到复制集中的每一个节点上,作为授权码

    分片集群中: