上一章配置完副本集后,紧接着继续配置数据库权限。链接直通车:https://blog.csdn.net/liubo_2016/article/details/91871268
登录 PRIMARY节点创建用户,在此我们对 test 库开启安全认证。
先创建全局管理员用户:db.createUser({user:"root",pwd:"ygW_2019",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
然后创建测试库读写权限用户: db.createUser({ user: "admin",pwd: "ygW_2019",roles: [{role: "readWrite",db: "test"}]})
创建keyFile文件
先停掉所有SECONDARY节点的MongoDB服务,然后再停掉PRIMARY节点的MongoDB服务,并在PRIMARY节点所在服务器上创建keyFile文件。(注:如果mongo服务器没有安装openssl,需要先安装:yum install openssl
)
指令如下: mongod --shutwodn --dbpath /usr/local/mongodb-4.0.2/data
openssl rand -base64 666 > /usr/local/mongodb-4.0.2/keyfile
将生成的keyFile文件拷贝到其他节点服务器上,并修改文件的操作权限为 600。
指令: chmod 600 /usr/local/mongodb-4.0.2/keyfile
如下图:
更新启动配置文件
修改PRIMARY节点(10.1.1.68)的 mongodb.conf 文件,增加如下内容:
# Add auth Config
auth=true
oplogSize=100
keyFile=/usr/local/mongodb-4.0.2/keyfile
修改SECONDARY节点(10.1.1.69,10.1.1.70)的 mongodb.conf 文件,增加如下内容:
# Add auth Config
oplogSize=100
keyFile=/usr/local/mongodb-4.0.2/keyfile
启动副本集
先以 --auth 方式启动PRIMARY节点: mongod -f /usr/local/mongodb-4.0.2/mongodb.conf
再启动SECONDARY节点:
mongod -f /usr/local/mongodb-4.0.2/mongodb.conf
mongo -uadmin -pygW_2019 10.1.1.68:27017 --- 如下图:
但是问题来了,这时候再去查看副本集的状态,提示权限不足:
因为之前创建root用户时,只给了角色dbAdminAnyDatabase权限,所以在操作rs.config(),rs.status()时,提示没有权限操作;
帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。
我们只需给root重新赋权就好了,
db.updateUser("root", {
pwd: "ygW_2019",
roles: [{
role: "dbOwner",
db: "admin"
}, {
role: "clusterAdmin",
db: "admin"
}, {
role: "userAdminAnyDatabase",
db: "admin"
}, {
role: "dbAdminAnyDatabase",
db: "admin"
}, {
role: "root",
db: "admin"
}
]
})
如下图:
然后我们在查看副本集状态:rs.status(),可以看到了,如下图: