安装好mongdb 配置用户访问权限后,在命令模式下发现show dbs 报错,懵逼了不是配置权限了么。下面是我的解决回放:
#进入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"
}
似乎是没权限操作。
#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数据库中可用。超级账号,超级权限