Mongodb的带用户验证replica set配置

mkdir -p /data/data/dbmaster /data/data/dbslave1 /data/data/dbslave2 /data/data/dbslave3


mongod --fork --auth --master --port 27017 --dbpath /data/data/dbmaster  --logpath /data/data/dbmaster.log #主库

mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27011 --dbpath /data/data/dbslave1 --logpath /data/data/dbslave1.log  #从库1

mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27012 --dbpath /data/data/dbslave2 --logpath /data/data/dbslave2.log  #从库2

mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27013 --dbpath /data/data/dbslave3 --logpath /data/data/dbslave3.log  #从库3



#创建三个数据存放目录用来做db的路径

mkdir -p /data/data/dbmaster /data/data/dbslave1 /data/data/dbslave2 /data/data/dbslave3

#启动一个mongod实例

mongod --fork --auth --master --port 27017 --dbpath /data/data/dbmaster  --logpath /data/data/dbmaster.log


#因为我需要做带用户验证的replica set,所以先这样启动来设置用户
#若要使用replica set,那么所有的节点机器必须在local库里要新增一个repl的用户
use local
db.addUser('repl','replication')
否则,当我们启动slave时,会报错:

引用
replauthenticate: no user in local.system.users to use for authentication
replauthenticate: can't authenticate to master server, user:repl

#同样,启动另外三个mongod实例,分别添加local用户
mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27011 --dbpath /data/data/dbslave1 --logpath /data/data/dbslave1.log

mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27012 --dbpath /data/data/dbslave2 --logpath /data/data/dbslave2.log

mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27013 --dbpath /data/data/dbslave3 --logpath /data/data/dbslave3.log


use local
db.addUser('repl','replication')

完成后将三个实例在控制台关闭
use admin
db.shutdownServer();

#接下来我们以replica set的方式启动这三个实例

//./mongod  --replSet testrs --port 27019 --dbpath /data/data/dbslave1  --auth


mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27011 --dbpath /data/data/dbslave1 --logpath /data/data/dbslave1.log

mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27012 --dbpath /data/data/dbslave2 --logpath /data/data/dbslave2.log

mongod --fork --auth --slave --source 192.168.1.100:27017 --port 27013 --dbpath /data/data/dbslave3 --logpath /data/data/dbslave3.log

注意,这里带上了--auth参数,要求客户端使用用户登录

启动好这三个实例后,要去其中一台机的控制台去初始化。该初始化操作只执行一次如下:
db.runCommand({"replSetInitiate":{"_id":"testrs","members":[
{"_id":1, "host":"localhost:27017",priority : 1},
{"_id":2,"host":"localhost:27018",priority : 1},
{"_id":3,"host":"localhost:27019",priority : 0 }
]}})
执行完这个命令后,没什么意外的话,三个实例的replica set就配置启动好了。

通过rs.status();查看哪个实例是主节点,去登录主节点的客户端。
由于设置了--auth参数,所以我们要先建立用户。
use admin;
db.addUser('root','root'); //在admin库里创建一个root用户
db.auth('root','root');
use wj;
db.addUser('wj','wj'); //在wj库里创建一个wj用户

这样,在wj库里新增数据的话,就可以在三台实例里查看到了。
在从节点查看数据的话,需要执行db.getMongo().setSlaveOk()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值