mongodb 副本集加密码认证 keyFile认证的简单方法
借鉴自:https://blog.csdn.net/pengjunlee/article/details/84101732
在测试环境中搭建 副本集 带密码认证的 简单步骤
1、安装,不介绍了
2、配置文件
节点1 , 文件名:mongodb.conf
dbpath = /usr/local/mongodb/data/db
logpath = /usr/local/mongodb/logs/mongodb.log
port = 27017
fork = true
logappend = false
bind_ip=0.0.0.0 #允许访问的ip地址
replSet=rs0 #集群编号
keyFile=/usr/local/mongodb/bin/keyfile
节点2,文件名:mongodb-dev.conf
dbpath = /usr/local/mongodb/data/db2
logpath = /usr/local/mongodb/logs/mongodb2.log
port = 27018
fork = true
logappend = false
bind_ip=0.0.0.0 #允许访问的ip地址
replSet=rs0 #集群编号
keyFile=/usr/local/mongodb/bin/keyfile
3、配置完成之后,启动
mongod --config mongodb.conf
mongod --config mongodb-dev.conf
4、副本集初始化
通过 Shell 连接到任意一个MongoDB实例,执行 rs.initiate() 方法对副本集进行初始化。
[root@hadoop34 mongodb-4.0.2]# mongo 172.16.250.234:27017
> conf=
{
"_id" : "rs0",
"members" : [
{ "_id" : 0, "host" : "127.0.0.1:27017" },
{ "_id" : 1, "host" : "127.0.0.1:27018" },
]
}
> rs.initiate(conf)
{
"ok" : 1,
"operationTime" : Timestamp(1542247326, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1542247326, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
rs0:SECONDARY>
如果在执行 rs.initiate() 方法时不传入任何参数,MongoDB 将以默认的配置文档对副本集进行初始化,后续可以再通过 rs.add() 方法来向副本集中添加成员。
副本集更新
# 向副本集中添加成员
rs.add("172.16.250.240:27017")
# 从副本集中删除成员
rs.remove("172.16.250.240:27017")
# 向副本集中添加仲裁
rs.addArb("172.16.250.240:27017")
# 向副本集中添加备份节点
rs.add({"_id":3,"host":"172.16.250.240:27017","priority":0,"hidden":true})
开启安全认证
创建用户
登录 PRIMARY节点创建用户,在此我们对 test 库开启安全认证。
rs0:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
local 0.002GB
test 0.000GB
rs0:PRIMARY> use admin
switched to db admin
rs0:PRIMARY> db.createUser({user:"root",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
rs0:PRIMARY> use test
switched to db test
rs0:PRIMARY> db.createUser({user:"admin",pwd:"admin",roles:[{role:"readWrite",db:"test"}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
创建keyFile文件
先停掉所有SECONDARY节点的MongoDB服务,然后再停掉PRIMARY节点的MongoDB服务,并在PRIMARY节点所在服务器上创建keyFile文件。
[root@hadoop39 mongodb-4.0.2]# openssl rand -base64 666 > /usr/local/mongodb-4.0.2/keyfile
[root@hadoop39 mongodb-4.0.2]# chmod 600 /usr/local/mongodb-4.0.2/keyfile
将生成的keyFile文件拷贝到其他节点服务器上,并修改文件的操作权限为 600。
chmod 600 /usr/local/mongodb-4.0.2/keyfile
更新启动配置文件
修改PRIMARY节点的 mongodb.conf 文件,增加如下内容:
# Add below Config
auth=true
oplogSize=100
keyFile=/usr/local/mongodb-4.0.2/keyfile
修改SECONDARY节点的 mongodb.conf 文件,增加如下内容:
# Add below Config
oplogSize=100
keyFile=/usr/local/mongodb-4.0.2/keyfile
启动副本集
先以 --auth 方式启动PRIMARY节点:
[root@hadoop39 mongodb-4.0.2]# mongod -f /usr/local/mongodb-4.0.2/mongodb.conf
再启动SECONDARY节点:
mongod -f /usr/local/mongodb-4.0.2/mongodb.conf
————————————————
版权声明:本文为CSDN博主「pengjunlee」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pengjunlee/article/details/84101732