vlambda博客
学习文章列表

Mongodb4.2.6使用keyfile认证副本集安装in Centos7

记录一下安装过程,以下在Centos7中完成
一.安装准备
##准备三台机器,本次为在一台机器上安装故采用不同端口27017 27018 27019,采用普通用户localuser
##集群目录/data/mongodb
mkdir -p /data/mongodb  && cd /data
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.6.tgz   ##下载Mongodb
tar xf mongodb-linux-x86_64-rhel70-4.2.6.tgz  && mv mongodb-linux-x86_64-rhel70-4.2.6  mongodbsoft  ##解压重命名
cd  /data/mongodbsoft/ && cp bin/*  /usr/local/bin &&  cd /data/mongodb && mkdir  -p  27017/conf  27017/data 27017/log  27018/conf  27018/data 27018/log  27019/conf  27019/data 27019/log   ##如果不想移到local/bin目录下也可以加入环境变量,这里图方便
###环境变量 export PATH=$PATH:/data/mongodb/bin
二.创建配置文件初始化副本集
##创建配置文件,mongo的配置文件采用yaml语法,mongod.conf如下systemLog:

   destination: file

   path: /data/mongodb/27017/log/mongodb.log

   logAppend: true

storage:

   journal:

      enabled: true

   dbPath: /data/mongodb/27017/data

   directoryPerDB: true

   wiredTiger:

      engineConfig:

          directoryForIndexes: true

      collectionConfig:

          blockCompressor: zlib

      indexConfig:

        prefixCompression: true

processManagement:

   fork: true

net:

    port: 27017

    bindIp: 192.168.0.1

replication:

   oplogSizeMB: 2048

   replSetName: rep001

#security:

   #keyFile: "/data/mongodb/27017/conf/mongo.key"

   #authorization: enabled

   #clusterAuthMode: keyFile

  将以上配置文件分别拷贝到27017/conf/  27018/conf 27019/conf 目录下,然后将27018 27019目录下的配置端口修改成相应的,同时因为是同一台Ip不用修改,如果是3台分别改成对应的IP即可,端口可相同,修改完启动副本集群,这里security先注释后面创建用户再开启
 mongod  -f  27017/conf/mongod.conf
 mongod  -f  27018/conf/mongod.conf
 mongod  -f  27019/conf/mongod.conf
启动如果没有报错则进入终端配置副本集
mongo --port 27017  

##初始化副本集

config = {_id: 'rep1', members: [

                          {_id: 0, host: '192.168.0.1:27017'},

                          {_id: 1, host: '192.168.0.1:27018'},

                          {_id: 2, host: '192.168.0.1:27019'}]

          }

rs.initiate(config)

如果中途没有报错则可以使用

use admin   

rs.status()                 #查看状态是不是3个角色分别为Primary/Secondary,记录下为Primary角色的端口号

三.新建用户分别建立管理员/集群管理员/普通用户(按需指定db上的权限)

##在主节点执行 仅在主节点执行,进入Primary角色命令行

 mongo 192.168.0.1:27017    

use admin  

##管理员             

db.createUser(         

{

user:"admin",

pwd:"yyss2020",

roles:[{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"}]

}

)

##集群管理员

db.createUser(         

{

user:"clusteradmin",

pwd:"yyss2020",

roles:[{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},{role:"clusterMonitor",db:"admin"}]

}

)

##普通使用用户

use testdb         

db.createUser(         

{

user:"dev",

pwd:"devmm2020",

roles:[{role:"readWrite",db:"testdb"},{role:"dbAdmin",db:"testdb"},{role:"userAdmin",db:"testdb"}]

}

)

如果要建只读用户只需将role改成只读read即可
这时可以查看建立的用户是否成功
use admin
db.system.users.find() 
四.关闭现有集群并开启认证
mongo 192.168.0.1:27017   
use admin
db.shutdownServer() 
mongo 192.168.0.1:27018   
use admin
db.shutdownServer() 
mongo 192.168.0.1:27017   
use admin
db.shutdownServer() 
生成集群通讯的keyfile文件,配置里面写的是/data/mongodb/27017/conf/mongo.key

cd  /data/mongodb/27017/conf

openssl rand -base64 2048 > mongo.key  #如果是不同机器分别拷到相应目录

将配置文件中的security注释的4行去掉#号然后重新启动,首先启动要作为Primary的,正常后再启动余下2台
 mongod  -f  27017/conf/mongod.conf
 mongod  -f  27018/conf/mongod.conf
 mongod  -f  27019/conf/mongod.conf
都启动后进入命令端查看副本集状态,切换成集群管理员查看
mongo --port 37017
use admin
db.auth('clusteradmint','yyss2020');
rs.status()

至此副本集可正常使用了