一 用户管理

注意:
mongodb有一个验证库的概念,建立用户时必须先use到的某个库,
而这个库,就是该用户的验证库,在使用用户时,要加上验证库才能登陆。
对于管理员用户,必须在admin库下创建.

A 语法规则

mongodb默认未创建任何用户,所以初次安装好mongodb后,配置文件中不能开启验证功能,否则没法登陆.
在创建好管理员用户后,再到配置文件中开启认配置并重启mongodb后,才能正常使用认证功能
基本语法:

1
2
3
4
5
6
7
8
9
db.createUser
{ user: "<name>",
pwd: "<cleartext password>",
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]
}

createUser字段介绍:

  • user字段,为新用户的名字;
  • pwd字段,用户的密码;
  • cusomData字段,为任意内容,例如可以为用户全名介绍,可省略;
  • roles字段,指定用户的角色
    • 可以用一个空数组给新用户设定空角色
    • 可以指定内置角色和用户定义的角色
    • 常用role:root,readWrite,read

内置角色介绍:

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
    dbOwner|userAdmin|userAdminAnyDatabase几个角色间接或直接也提供了系统超级用户的访问
  7. 内部角色:__system

二 管理员账号

A 创建 admin管理员

1
2
3
4
5
6
use admin
db.createUser({
user: "root",
pwd: "root123",
roles: [ { role: "root", db: "admin" } ]
})

验证测试

1
2
> db.auth('root','root123')
1

B 配置文件开启认证

配置文件mongodb.conf中,加入以下配置

1
2
security:
authorization: enabled

重启mongodb

1
2
mongod -f /opt/mongodb/conf/mongo.conf --shutdown 
mongod -f /opt/mongodb/conf/mongo.conf

C 登录验证

  • 方法一:登录时加认证信息
    这种方式需要指定验证库
1
2
mongo -uroot -proot123  admin
mongo -uroot -proot123 10.0.0.51/admin #登录远程服务器方法
  • 方法二:登录后再验证
    需要吓你use到账号的验证库中
1
2
3
4
mongo
use admin
db.auth('root','root123')
```#

D 查看用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> use admin
> db.system.users.find().pretty()
{
"_id" : "admin.root",
"user" : "root",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "EwrJYzjZts2/FXXcHV0buA==",
"storedKey" : "zY0zkNQgBOeSmE1unpFCbnDtyDE=",
"serverKey" : "bthrv5ACb1k7aE/UKnC3uzco4vY="
}
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}

三 普通用户账号

超级管理员用户登陆
mongo -uroot -proot123 admin
选择一个验证库创建用户
use app
db.createUser(
{
user: “app01”,
pwd: “app01”,
roles: [ { role: “readWrite” , db: “app” } ]
}
)
使用该用户登录
mongo -uapp01 -papp01 app
db.system.users.find().pretty()
四 账号删除
需要以root身份登录,然后use到该用户的验证库)

mongo -uroot -proot123 10.0.0.51/admin
use app
db.dropUser(“app01”)