本文介绍的是基于Windows 平台的MongoDB副本集的搭建,MongoDB版本为Version:3.2.7,所以请注意一些相关的指令。
1、准备三台服务器,用户搭建副本集:OADB01,OADB02,OADBO3,分别在这三台服务器上安装MongoDB。.
2、用如下指令,生成Keyfile 文件,文件名为
echo -e "my secret key" >D:\ mongokey
3、用记事本打卡该文件,并删除里面的特殊符号-,“”,不然后续启动这个文件的时候,会提示错误。
4、将生成的mongokey文件备考到每个服务器的相同路径,以便于后续使用。
5、分别在每台服务器上用如下指令启动MongoDB的服务,设置MongoDB端口,以及数据库地址,复制集名称。
mongod --port 27017 --dbpath "D:\MongoDB\rsDB1" --replSet rs0
6、进入shell,然后再执行如下指令进行副本集的初始化,初始化的时候因为各个服务器之间是没有通过用户名密码验证的,所以需要先关闭防火墙,以免不能正常通讯。
use admin
db.runCommand({"replSetInitiate":
{
"_id":'rs0',
"members":[{
"_id":1,
"host":"OADB01:27017"
},{
"_id":2,
"host":"OADB02:27017"
},{
"_id":3,
"host":"OADB03:27017"
}]
}
})
use admin
db.shutdownServer()
8、再次启动副本及,这次加入我们生成的Keyfile文件启动:
mongod --keyFile "D:\mongokey" --port 27017 --dbpath "D:\MongoDB\rsDB1" --replSet rs0
9、查看副本集运行情况,并确认主副本所在服务器
rs.status()
10、在主副本集上打开shell,新增一个数据库管理员账号,注意这个集合的账户,当增加了一个账户以后,便不能采用匿名方式登录了,所以这个账户是后续给其他账户
授权的账户,需要一定的权限。
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "admin",
pwd: "dmin12345",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
mongo -u "admin" -p "admin12345" --authenticationDatabase "admin"
12、登陆以后,我们可以通过这个账户再去增加其他的账户,比如:
use admin
db.createUser(
{
"user" : "OA",
"pwd" : "OA",
roles: [ { "role" : "readWriteAnyDatabase", "db" : "admin" } ]
}
)
参考文件:
https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/
https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/