replica set权限认证mongodb
要生一个keyfile文件,用于节点之间权限认证的安全
mkdir -p /mnt/mongodb/rs/config ide
cd /mnt/mongodb/rs/config spa
openssl rand -base64 741 > mongodb-keyfile ssl
chmod 300 mongodb-keyfile get
官网上的是600的,必需要改成300,若是不是的话, 会在启动的时候mongodb.log里写权限太开放的缘由致使启动mongodb失败!(这里先确保你已经安装了openssl,若是没有装,yum install openssl)openssl
将mongodb-keyfile复制到每个节点对应的目录下,若是以前已经启动的mongodb的话,用mongo进入到终端后,先查看那个节点是主节点,rs.status(); 去到主节点下执行:it
use admin #选择须要认证的数据 base64
db.addUser('name','password'); ast
固然,也能够某一个自建的库进行权限认证
use test1
db.addUser('test','123456');
提示添加成功后,所有中止,每一节点执行db.shutdownServer();而后对mongod.conf文件添加如下两行:
auth=true
keyFile=/mnt/mongodb/rs/confile/mongodb-keyfile
最后所有重启便可!
进入主节点终端,输入
db.runCommand({getLastError:1, w: N});
若是没有N,或者小于2,命令就会马上返回,若是N等于2,主节点要等到至少一个从节点复制了上个操做都会响应命令(主节点自己也包括在N里面)。主节点使用local.slaves中存放的"syncedTo"信息来跟踪从节点的更新状况。
当指定"w"选项后,还可使用"wtimeout"选项,表示以毫秒为单位的超时。getLastError就能在上一个操做复制到N个节点超时时返回错误(默认状况下命令是没有超时的)。
阻塞复制会致使写操做明显变慢,尤为是"w"的值比较大时。实际上,对于重要的操做将其值设置为2或者3就能效率与安全兼备了。