mongodb的认证(5)


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师
个人网站:www.zhanghehe.cn
笔者微信:zhanghe15069028807,现居济南历下区
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-


mongodb的认证

单实例认证

systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/27017/mongodb.log
storage:
  dbPath: /data/mongodb/27017/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 27017
  bindIp: 127.0.0.1
security:                      #这里有一个安全认证,启动
  authorization: enabled
//启动之后是无法使用insert,因为没有认证
//创建用户名和密码
use admin
db.createUser({
  user: "zhanghe",
  pwd: "cba-123",
  roles: [ { role: "root", db: "admin"}]    #这里的root和admin的意思仅代表最高权限而已。
})


//想要插入,要先认证,认证的方法如下:
use admin
db.auth('zhanghe', 'cba-123')

//在终端登录的时候可以这样认证:
mongo -uzhanghe -pcba-123 --authenticationDatabase admin

副本集认证

副本集的认证开启

  1. 先副本集数据同步使用密钥,然后副本集搭建完成后再创建用户用来做认证

  2. openssl rand -base64 756 > /data/mongodb/zhanghe.key

  3. chmod 700 /data/mongodb/zhanghe.key

同步的时候使用密钥,我们使用的时候,也就是用户认证的时候还是要创建用户做认证

所有的服务器都要有密钥,不然也无法同步

Mongodb副本集配置文件mongodb.conf
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/27017/mongodb.log
storage:
  dbPath: /data/mongodb/27017/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 27017
  bindIp: 127.0.0.1
replication:
 replSetName: zhanghe
security:
  keyFile: /data/mongodb/zhanghe.key
  authorization: enabled


//启动三个Mongodb服务器
mongod -f /data/mongodb/27017/mongodb.conf
mongod -f /data/mongodb/27018/mongodb.conf
mongod -f /data/mongodb/27019/mongodb.conf

副本集初始化

use admin
config = { _id:"zhanghe", members:[
  {_id:0,host:"127.0.0.1:27017"},
  {_id:1,host:"127.0.0.1:27018"},
  {_id:2,host:"127.0.0.1:27019"}]
}
rs.initiate( config )
rs.status()

副本集设置认证,登录到primary,运行以下命令创建用户

use admin
db.createUser({
  user: "zhanghe",
  pwd: "cba-123",
  roles: [ { role: "root", db: "admin"}]
})

测试副本集的数据同步

use zhanghe
db.user.insert({ name: "zhanghe" })
rs.slaveOk()
rs.printSlaveReplicationInfo()

分片集群认证

注意点:

router不需要配置认证,得配置keyFile
configsvr需要配置认证
sharedsvr需要配置认证

过程略过,详情请见上一篇博客,此处不再赘述……

posted @ 2020-01-10 17:00  张贺贺呀  阅读(247)  评论(0编辑  收藏  举报