mognodb3.4复制集从无密码到密码无需downtime(新特性)
现有mongodb复制集信息
主机 端口 状态
192.168.201.129 5000 secondary
192.168.201.130 5000 primary
192.168.201.132 5000 secondary
1、首先创建administrator 用户
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
2、创建集群管理用户
db.getSiblingDB("admin").createUser(
{
"user" : "clmanager",
"pwd" : "clmanager123",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
3、 创建业务用户
db.getSiblingDB("foo").createUser(
{
"user" : "joe",
"pwd" : "changeme2",
roles: [ { "role" : "readWrite", "db" : "foo" } ]
}
)
4、创建key文件
openssl rand -base64 756 > <path-to-keyfile>
chmod 400 <path-to-keyfile>
5、 确定key的位置并复制key文件到复制集的每一个节点
6、 使用transitionToAuth参数重启复制集secondary或者arbiter
6.1. 登录192.168.201.129添加如下内容
security:
keyFile: /data/nosql/mongo/mongod/5000/keys/key
clusterAuthMode: keyFile
transitionToAuth: true
6.2. 重启192.168.201.129上的mognodb
/usr/local/mongodb-3.4.18/bin/mongod -f /etc/mongod_5000.conf --shutdown
/usr/local/mongodb-3.4.18/bin/mongod -f /etc/mongod_5000.conf
6.3. 登录 192.168.201.132 重复6.1/6.2 步骤
6.4. 登录 192.168.201.130(primary)
rs.stepDown()
重复步骤 6.1/6.2
7 去掉transitionToAuth参数重启复制集secondary或者arbiter
7.1. 登录192.168.201.130去掉配置文件如下内容
transitionToAuth: true
7.2. 重启192.168.201.130上的mognodb
/usr/local/mongodb-3.4.18/bin/mongod -f /etc/mongod_5000.conf --shutdown
/usr/local/mongodb-3.4.18/bin/mongod -f /etc/mongod_5000.conf
7.3. 登录 192.168.201.132 重复6.1/6.2 步骤
7.4. 登录 192.168.201.129(primary)
rs.stepDown()
重复步骤 6.1/6.2