centos7mongodb创建管理员账号(最详细操作)
程序员文章站
2022-07-14 14:40:22
...
本文是假设你已经部署好数据库环境了的
废话不多说直接贴代码
> mongo
MongoDB shell version v3.6.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.1
> use admin
2018-09-12T22:30:47.472+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0, $db: \"admin\" }",
"code" : 13,
"codeName" : "Unauthorized"
} :
_get[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/mongo.js:65:1
[email protected]/mongo/shell/utils.js:813:19
[email protected]/mongo/shell/utils.js:703:15
@(shellhelp2):1:1
上面是查看数据库的时候提示没有权限,我们接下来增加一个用户管理的账号
> db.createUser({user:"userAdmin",pwd:"admin123456",roles:["userAdminAnyDatabase"]})
注意 : 这个上面创建一个拥有 userAdminAnyDatabase 角色,用来管理用户的用户,可以通过这个角色来创建、删除用户,这个并不能操作admin这个数据库,我们想要操作所有数据库的权限,此时我们可以在进行创建一个管理所有数据库的账号。
> db.createUser({user:"root",pwd:"root123",roles:[{role:"readWriteAnyDatabase",db:"admin"}]})
使用这个命令,可以添加所有的读写权限,我们发现mongodb对权限分的特别细,无法赋予多个权限,而且只能再admin数据库验证了用户后才可对其他数据库操作,所以添加了一个账号,先验证后,然后赋予所有数据库读写权限。
roles | 属性 |
---|---|
readAnyDatabase | 任何数据库的只读权限 |
userAdminAnyDatabase | 任何数据库的读写权限 |
userAdminAnyDatabase | 任何数据库用户的管理权限 |
dbAdminAnyDatabase | 任何数据库的管理权限 |
Unauthorized: not authorized on test to execute command { dbstats: 1.0, scale: undefined, $db: "test" }
遇到这种错误的时候是说你当前账号权限不足我们如果不想用上面的方式重新创建账号现在一个账号操作也是可以的
$ mongo
> use admin
> db.createUser(
{
user: "userAdmin",
pwd: "admin123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
> db.stats()
{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { dbstats: 1.0, scale: undefined }",
"code" : 13,
"codeName" : "Unauthorized"
}
> db.auth("userAdmin", "admin123456") #授权
> db.grantRolesToUser("myUserAdmin", [ { role: "read", db: "admin" } ] #重新更改role属性
> show users #然后这个时候我们在重新看一下
{
"_id" : "admin.myUserAdmin",
"user" : "userAdmin",
"db" : "admin",
"roles" : [
{
"role" : "read",
"db" : "admin"
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>db.stats()
{
"db" : "admin",
"collections" : 2,
"views" : 0,
"objects" : 3,
"avgObjSize" : 151,
"dataSize" : 453,
"storageSize" : 65536,
"numExtents" : 0,
"indexes" : 3,
"indexSize" : 81920,
"ok" : 1
}
以上就是mongodb 创建管理员账号的操作以及可能遇到的问题