用户管理
read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root 只在admin数据库中可用。超级账号,超级权限
用户创建
{
user: "<name>", 用户的名字
pwd: "<cleartext password>", 用户的密码
customData: {
<any information> }, 任意内容,可为用户全名的介绍
roles: [ 指定用户的角色,可以用一个空数组给新用户设定空角色
{
role: "<role>", 可以指定内置角色和用户自定义角色
db: "<database>" } | "<role>",
...
]
}
创建管理员用户
MongoDB Enterprise > use admin
switched to db admin
MongoDB Enterprise > db.createUser(
... {
... user:'root',
... pwd:'123456',
... roles:[{
role:'root',db:'admin'}]
... }
... )
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
注意: 创建管理员角色用户的时候,必须到admin下创建。 删除的时候也要到相应的库下操作。
查看创建完用户后的collections;
show tables
show users 查看创建的管理员用户
MongoDB Enterprise > show tables;
system.users
system.version
MongoDB Enterprise > show users;
{
"_id" : "admin.root",
"user" : "root",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
验证用户是否能用
MongoDB Enterprise > db.auth('root','123456')
1
用户创建完成后在配置文件中开启用户验证
修改配置文件
[root@node1 ~]# vim /etc/mongod.conf
security:
authorization: enabled
重启服务
[root@node1 ~]# systemctl restart mongod.service
测试用户验证
MongoDB Enterprise > show dbs
2021-02-03T18:27:41.929+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
...
1、数据库内认证
MongoDB Enterprise > use admin
switched to db admin
MongoDB Enterprise > db.auth('root','123456')
1
2、数据库外认证
[root@node1 ~]# mongo -uroot -p123456 admin
MongoDB Enterprise >
按生产需求创建应用用户
1、创建对某库的只读用户,在test库创建只读用户
MongoDB Enterprise > db.createUser(
... {
... user:'test',
... pwd:'123456',
... roles:[{
role:'read',db:"test"}]
... }
... )
测试:
MongoDB Enterprise > db.auth("test",'123456')
1
MongoDB Enterprise > show users;
{
"_id" : "test.test",
"user" : "test",
"db" : "test",
"roles" : [
{
"role" : "read",
"db" : "test"
}
]
}
MongoDB Enterprise > show collections;
user
2、创建对app为读写权限,对test库为只读权限的用户
MongoDB Enterprise > use app
switched to db app
MongoDB Enterprise > db.createUser(
...