ITPub博客

首页 > 数据库 > NoSQL > MongoDB 6.0.3 用户管理

MongoDB 6.0.3 用户管理

原创 NoSQL 作者:chenoracle 时间:2022-12-20 16:55:46 0 删除 编辑

参数文件

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://<credentials>@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###

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-2928763/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2722957