mongodb3.X 副本集(集群)添加用户名认证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb3.X 副本集(集群)添加用户名认证相关的知识,希望对你有一定的参考价值。
折腾好几天这个,由于工作问题,时间也比较散,今天终于抽空将其记录下来了,并且本地测试通过了得好了,废话不多说,下面就开始了,
首先需要搭建mongodb的副本集,再次,我的环境如下:
centos 6.5
mongodb 3.2.11
mongdb下载地址:https://www.mongodb.com/download-center?jmp=nav#community
在此我们需要配置三个mong单节点,然后将其结合组成副本集,
安装路径/usr/local/mongd
三个mongdb分别占用端口27017 27018 27019
在/usr/local/mongd下面创建四个数据目录和一个配置目录以及一个日志目录
mkdir /usr/local/mongd/data{1..4}
mkdir /usr/local/mongd/log
mkdir /usr/local/mongd/etc
三个mongodb的配置文件分别如下所示:配置文件的路径: /usr/local/mongd/etc/
第一个mongodb的配置文件:mongod.conf
port=27017
dbpath=/usr/local/mongod/data1/
logpath=/usr/local/mongod/log/mongodb.log
pidfilepath=/usr/local/mongod//mongod.pid
fork=true
logappend=true
shardsvr=true
directoryperdb=true
#auth=true
#replSet=zpf
#oplogSize=100
#keyFile=/usr/local/mongod/etc/mongo.pass ###这个文件后边需要手动生成,路径和文件名都是自定义的
第二个mongodb的配置文件:mongod2.conf 内容如下:
port=27018
dbpath=/usr/local/mongod/data2/
logpath=/usr/local/mongod/log/mongodb.log
pidfilepath=/usr/local/mongod//mongod.pid
fork=true
logappend=true
shardsvr=true
directoryperdb=true
#auth=true
replSet=zpf
oplogSize=100
keyFile=/usr/local/mongod/etc/mongo.pass ###三个配置文件中这个文件需要一致
第三个mongodb的配置文件:mongod3.conf,内容如下:
port=27019
dbpath=/usr/local/mongod/data3/
logpath=/usr/local/mongod/log/mongodb3.log
pidfilepath=/usr/local/mongod//mongod3.pid
fork=true
logappend=true
shardsvr=true
directoryperdb=true
#auth=true
replSet=zpf
oplogSize=100
keyFile=/usr/local/mongod/etc/mongo.pass ###三个配置文件中这个文件需要一致
首先启动一个节点,即先启动第一个mongodb,27017端口的那个,因为再次我想用其做primary节点
mongod --config /usr/local/mongod/etc/mongod.conf
启动后,连接节点,在里面添加用户,在此 我添加了一个root角色的用户(权限最高的用户了),
添加用的方法如下:
use admin
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
由于我的是mongodb3.2版本的所以添加用户需要用上述的操作
用户添加完成后,关闭mongodb,然后修改mongodb的配置文件,只修改第一个的配置文件就行,因为再次,我们就启动了第一个mongodb数据库,
修改的配置如下所示:
port=27017
dbpath=/usr/local/mongod/data1/
logpath=/usr/local/mongod/log/mongodb.log
pidfilepath=/usr/local/mongod//mongod.pid
fork=true
logappend=true
shardsvr=true
directoryperdb=true
auth=true ###去掉注释
replSet=zpf ###去掉注释
oplogSize=100 ###去掉注释
keyFile=/usr/local/mongod/etc/mongo.pass ###去掉注释
然后生成一个keyFile,副本集之间通过此文件来进行验证,
openssl rand -base64 521 > /usr/local/mongod/etc/mongo.pass ###这个名字随意定义,但是配置文件中也需要制定这个文件的,在此我的是同一台机器,所以,路径相同,如果是不同机器之间的做副本集,则需要将此文件复制到不同的机器上去
创建完成后,还需要修改此文件的权限为600,只有拥有者有权限,其余的组和其他用户没有任何的权限
chmod 600 /usr/local/mongod/etc/mongo.pass
修改完成后,启动mongdb数据库即可
这次需要三个数据都启动,
然后登陆数据库进行操作就行,但是,切记需要先验证账号和密码才可以
[[email protected] etc]# mongo
MongoDB shell version: 3.2.11
connecting to: test
zpf:PRIMARY> use admin
switched to db admin
zpf:PRIMARY> db.auth("admin","123456")
1
下边就是进行详细的副本集的配置了,可以参考另一篇文档,副本集配置完成后,链接这三个的任何一都需要先验证账号和密码才可以进行操作,副本集的配置操作,参看另一篇文档:mongod 集群分片
以上是关于mongodb3.X 副本集(集群)添加用户名认证的主要内容,如果未能解决你的问题,请参考以下文章
java及spark2.X连接mongodb3.X单机或集群的方法(带认证及不带认证)