安装好mongdb 配置用户访问权限后,在命令模式下发现show dbs 报错,懵逼了不是配置权限了么。下面是个人解决回放:mongodb
#进入mongo 命令模式发现拨错 r@iZwz947cvofre97sstzcmuZ ~]# mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.2 > show dbs 2017-04-03T09:27:05.069+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13, "codeName" : "Unauthorized" }
彷佛是没权限操做。shell
#use admin 添加用户 db.createUser({user:"test",pwd:"123456",roles:[{role:'readAnyDatabase',db:'admin'}]}) Successfully added user: { "user" : "test", "roles" : [ { "role" : "readAnyDatabase", "db" : "admin" } ] }
退出mongo 命令模式,从新进入 发现能够了,?数据库
[r@iZwz947cvofre97sstzcmuZ ~]# mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.2 > use admin switched to db admin > db.auth('test','123456') 1 > show dbs admin 0.000GB local 0.000GB test 0.000GB
角色具体说明: Read:容许用户读取指定数据库 readWrite:容许用户读写指定数据库 dbAdmin:容许用户在指定数据库中执行管理函数,如索引建立、删除,查看统计或访问system.profile userAdmin:容许用户向system.users集合写入,能够找指定数据库里建立、删除和管理用户 dbOwner:数据库拥有者,包含readWrite、dbAdmin、userAdmin clusterAdmin:只在admin数据库中可用,赋予用户全部分片和复制集相关函数的管理权限 readAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的dbAdmin权限 root:只在admin数据库中可用。超级帐号,超级权限