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单机或集群的方法(带认证及不带认证)

MongoDb分片集群认证

MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

mongodb单机升级为副本集

Mongodb副本集认证授权

Mongodb副本集认证授权