MongoDB 6.0.3 用户管理

参数文件

vi /mongodb/27017/conf/mongodb.conf 
vi /mongodb/27018/conf/mongodb.conf 
vi /mongodb/27019/conf/mongodb.conf 
添加参数
auth=true

重启数据库

mongosh --port 27017
db.shutdownServer();
mongod -config /mongodb/27017/conf/mongodb.conf

启动报错

BadValue: security.keyFile is required when authorization is enabled with replica sets
try 'mongod --help' for more information

所有副本集节点都必须要用同一份keyfile,一般是在一台机器上生成,然后拷贝到其他机器上,且必须有读的权限

创建目录

[mongo@cjc-db-01 ~]$ mkdir /mongodb/27017/key
[mongo@cjc-db-01 ~]$ mkdir /mongodb/27018/key
[mongo@cjc-db-01 ~]$ mkdir /mongodb/27019/key

生成key文件

cd /mongodb/27017/key/
openssl rand -base64 90 -out ./mongo.keyfile
chmod 400 mongo.keyfile

拷贝

cp mongo.keyfile /mongodb/27018/key/
cp mongo.keyfile /mongodb/27019/key/

修改配置文件指定KEYFILE

分别编辑几个服务的mongod.conf文件,添加相关内容:

[mongo@cjc-db-01 ~]$ vi /mongodb/27017/conf/mongodb.conf 
keyFile=/mongodb/27017/key/mongo.keyfile
其他节点
keyFile=/mongodb/27018/key/mongo.keyfile
keyFile=/mongodb/27019/key/mongo.keyfile

启动数据库

mongod -config /mongodb/27017/conf/mongodb.conf
mongod -config /mongodb/27018/conf/mongodb.conf
mongod -config /mongodb/27019/conf/mongodb.conf

登录

[mongo@cjc-db-01 ~]$ mongosh --port 27017
Current Mongosh Log ID:63a14d11c836e43ca102748d
Connecting to:mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.6.1
Using MongoDB:6.0.3
Using Mongosh:1.6.1
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
cjcmonset [direct: primary] test> use admin
switched to db admin

创建用户 

db.createUser({user:"admin",pwd:"admin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

登录用户

db.auth('admin','admin')

继续创建用户

db.createUser({user:"root",pwd:"root",roles:["root"]})

普通用户权限

db.createUser({user:"cjc",pwd:"cjc",roles:[{role:"readWrite",db:"cjc"}]})
db.auth('cjc','cjc')
cjcmonset [direct: primary] cjc> db.t01.find();
[
  { _id: ObjectId("63a113836be69aceb7e1ae9b"), tname: 'cjc' },
  { _id: ObjectId("63a1217973fc637ac59b96f0"), txx: 'abc' },
  { _id: ObjectId("63a126e5406e8620614e4fd5"), aaa: 'ccc' }
]

指定用户登录

[mongo@cjc-db-01 ~]$ mongosh  -u cjc -p cjc --host 192.168.31.200 --port 27017
Current Mongosh Log ID:63a158914d0cfb76efb68786
Connecting to:mongodb://@192.168.31.200:27017/?directConnection=true&appName=mongosh+1.6.1
Using MongoDB:6.0.3
Using Mongosh:1.6.1
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
cjcmonset [direct: primary] test>

参数文件

[mongo@cjc-db-01 ~]$ cat /mongodb/27017/conf/mongodb.conf 
dbpath=/mongodb/27017/data
logpath=/mongodb/27017/log/mongodb.log
logappend=true
bind_ip = 0.0.0.0
fork = true
port = 27017
replSet=cjcmonset
auth=true
keyFile=/mongodb/27018/key/mongo.keyfile

数据库权限说明:

Built-In Roles(内置角色):

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

具体角色的功能: 

Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

###chenjuchao 20221220 16:55###

请使用浏览器的分享功能分享到微信等