参数文件
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###