MongoDB replica模式auth

MongoDB版本更新快,且3.x版本跟2.x版本相比有很多不同点,小编这里跟大家讲一下MongoDB3.4.7版本副本集模式的auth问题。关于MongoDB副本集模式请参考该博客http://blog.csdn.net/l192168134/article/details/51859811

准备三台虚拟机A、B、C,在这三台机器上创建文件夹

mkdir -p /data/mongodbtest/data
mkdir -p /data/mongodbtest/config
mkdir -p /data/mongodbtest/logs

下载mongoDB当前最新版安装包并解压

cd /data/mongodbtest
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.7.tgz
tar -xzf mongodb-linux-x86_64-3.4.7.tgz

编辑mongoDB配置文件

cd /data/mongodbtest/config
vim mongod.conf
dbpath=/data/mongodbtest/data   #数据存放目录
logpath=/data/mongodbtest/logs/mongod.log  #日志文件目录
pidfilepath=/data/mongodbtest/mongod.pid  #pid端口文件
logappend=true   #追加方式写日志文件
fork=true        #后台运行
journal=true     #启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里
replSet=dbset    #副本集名称,同一个副本集,名称必须一致

添加mongoDB安装路径到环境变量中

vim /etc/profile
export PATH=$PATH:/data/mongodbtest/mongodb-linux-x86_64-3.4.7/bin

启动mongoDB

mongod -f /data/mongodbtest/config/mongod.conf

三台机器的mongoDB都启动后,登陆其中一台机器的mongoDB

mongo 127.0.0.1:27017/admin
config={_id : 'dbset',members : [{_id : 1, host : '机器A的IP:27017'},{_id : 2, host : '机器B的IP:27017'},{_id : 3, host : '机器C的IP:27017'}]}
rs.initiate(config); 

退出再重新登录,发现提示符已经发生变化,至此你应该可以看到一台机为primary,二台机器的状态为secondary, 即完成副本集设置
登录primary的机器mongoDB,在admin库下创建用户root

mongo 127.0.0.1:27017/admin
db.createUser({ user: "root", pwd: "123", roles: [ { role: "root", db: "admin" } ] })
db.grantRolesToUser("root",["readWrite"])

运行命令生成一个keyfile文件,用于节点之间的权限认证

openssl rand -base64 741 > /data/mongodbtest/config/mongodb-keyfile
chmod 600 /data/mongodbtest/config/mongodb-keyfile

将keyfile上传到另外两台机器上面,设置权限600
然后修改所有机器的配置文件,添加如下两行

auth=true
keyFile=/data/mongodbtest/config/mongodb-keyfile

kill掉之前的mongoDB进程,重新启动mongoDB
此时再登录mongo 127.0.0.1:27017/admin会提示Unauthorized
需要使用用户名/密码的方式登录
mongo 127.0.0.1:27017/admin -u root -p 123

你可能感兴趣的:(MongoDB replica模式auth)