最近在部署MongoDB Replica Set,马上就到生产环境了,一想还没有给数据库设置用户权限,配置的这一路踩了好多坑,希望对大家有帮助

1. 配置好mongodb replica set 安装及三结点配置:

#下载地址:
https://www.mongodb.com/download-center?jmp=nav#community
下载后直接解压,安装rpm包
启动命令:
mongod -f /home/root/mongoconf/mongodb_master.conf #master.conf
dbpath=/home/root/mongodata/master
logpath=/home/root/mongolog/master.log
pidfilepath=/opt/mongodb/master.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=bbt
bind_ip= <ip>
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000 #arbiter.conf 仲裁配置 和主机在一个服务器
dbpath=/home/root/mongodata/arbiter
logpath=/home/root/mongolog/arbiter.log
pidfilepath=/opt/mongodb/arbiter.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=bbt
bind_ip=<ip>
port=27019
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000 #slave.conf
dbpath=/home/root/mongodata/slave
logpath=/home/root/mongolog/slave.log
pidfilepath=/opt/mongodb/slave.pid
#keyFile=/opt/mongodb/mongodb.key
directoryperdb=true
logappend=true
replSet=testdb
bind_ip=<ip2>
port=27017
#auth=true
oplogSize=100
fork=true
noprealloc=true
#maxConns=4000

启动后可任意找一个结点登录:
mongo 172.31.138.31:27017
执行以下命令配置集群:
cfg={ _id:"bbt", members:[ {_id:0,host:'172.31.138.31:27017',priority:2}, {_id:1,host:'172.31.138.30:27017',priority:1}, {_id:2,host:'172.31.138.31:27019',arbiterOnly:true}] };
rs.initiate(cfg)
rs.status() #查看集群状态

2.开始配置用户权限前的准备

由于前面配置好后所有结点的MongoDB服务都启动了,所以第二步先service mongod stop(所有结点都要停止服务) 注:这个命令不一定有效
此步骤可用
mongod -f /home/root/mongoconf/mongodb_master.conf --shutdown

3. 启动其中一台mongod服务, 正常启动,不要开启认证功能(#auth=true不要打开),并执行下面语句

 use admin
#创建用户管理权限
db.createUser(
{ user: "admin",
pwd: "admin",
roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
} use test
#创建用户操作权限(创建几个都可以)
db.createUser({ user: "userrwadmin", pwd: "userrw@hswj0424", roles: [{ role: "readWrite", db: "bbt" }]})
db.createUser({ user: "userradmin", pwd: "userr@hswj0424", roles: [{ role: "read", db: "bbt" }]})

4. 先在一台机器上产生mongodb keyfile

openssl rand -base64 741 > /home/root/mongodb-keyfile
chmod 600 /home/root/mongodb-keyfile

5.将mongodb-keyfile文件拷贝到各个节点上 并且赋予权限 (没有赋予权限的话mongo服务器不能启动)

6. 修改mongo.conf

keyFile=/home/root/mongodb-keyfile
auth = true

7.重启所有结点的mongod服务就ok了

8。操作验证

这两个是两台认证的user 和 pwd
use admin
db.auth('bbtadmin','mongo@hswj0424')
use bbt
db.auth('userrwadmin','userrw@hswj0424') 也可以可以使用mongo 172.31.138.31:27017 -u 'userrwadmin' -p 'userrw@hswj0424' --authenticationDatabase 'bbt' 去查看集合的内容
否则会报错——"too many users are authenticated" 

9.总结

1. 给admin库添加用户名和密码时,只需要在一个结点上操作,只要配置好了replica set, 用户名和密码会同步到其他结点.
2. 关于用户名密码认证和结点之间认证.
前者是对于mongodb client而言,处于对每个库的安全考虑,client端想操作数据库,必须先用用户名和密码登录,即配置文件中的auth=true;
而对于节点之间的认证,其实跟前面用户名密码认证是分离的,是让各结点之间有一个key来保持通信,即数据的同步等,是对整个集群成员的安全进行考虑,避免其他用户给集群胡乱添加成员.即配置文件中的keyFile;

mongodb--创建用户权限的更多相关文章

  1. 详解Oracle创建用户权限全过程

    本文将介绍的是通过创建一张表,进而实现Oracle创建用户权限的过程.以下这些代码主要也就是为实现Oracle创建用户权限而编写,希望能对大家有所帮助. 注意:每条语语分开执行,结尾必须用分号; // ...

  2. MongoDB创建用户

    1.在创建用户之前,我们首先应该启动mongodb的用户验证功能,否则建立用户是没有意义的! 2.使用 //这个123用户拥有test1数据库的数据库管理员权限,拥有test2数据库的读取权限 db. ...

  3. mongodb创建用户和密码

    创建数据库文件夹与日志文件mkdir /home/mongodb/datamkdir /home/mongodb/logstouch(创建文件)3. 启动mongodbcd到mongodb目录下的bi ...

  4. mongodb创建用户(转发)

    参考文档: https://www.cnblogs.com/itxiongwei/p/5520863.html MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访 ...

  5. MongoDB的用户权限管理

    1.创建用户并授权语法:db.createUser({user:"UserName",pwd:"Password",roles:[{role:"Rol ...

  6. win10环境下为mongoDB创建用户并认证登录

    一.配置mongoDB的bin目录到环境变量中的path;例如:D:\DatabaseService\MongoDB\Server\4.0\bin 二.cmd打开控制台,然后输入mongo回车,可以进 ...

  7. 为mongoDB加用户权限管理

    MongoDB常用命令 > show dbs                  #显示数据库列表 > show collections        #显示当前数据库中的集合(类似关系数据 ...

  8. MySQL创建用户权限结果Trigger失败

    说来惭愧,MySQL我已经在只将用于,非常赞赏阶段. 甚至一些比较深层次的管理,不熟悉如何,我们要加强啊! 最近.系统测试,使用MySQL数据库,你需要在表上创建触发器.该数据库是安装在机.但.在任何 ...

  9. windows service(system权限)创建用户权限进程

    windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限.打开任务管理器,可查看到. 通常桌面系统explorer的权限是User权限,即 ...

  10. 最新版 Mysql 8.0.16 创建用户权限更新回收权限

    1.创建用户语法 : create user ‘写你自己的用户名’@‘写你需要哪个IP连接你的用户(%表示所有)’ identified by ‘密码’; 案例: create user ‘wangx ...

随机推荐

  1. 【大厂面试04期】讲讲一条MySQL更新语句是怎么执行的?

    流程图 这是在网上找到的一张流程图,写的比较好,大家可以先看图,然后看详细阅读下面的各个步骤. 执行流程: 1.连接验证及解析 客户端与MySQL Server建立连接,发送语句给MySQL Serv ...

  2. tensorflow2.0学习笔记第一章第四节

    1.4神经网络实现鸢尾花分类 import tensorflow as tf from sklearn import datasets import pandas as pd import numpy ...

  3. Vue点击改变属性(改变文字颜色)

    <template> <div class="tab-control"> <div v-for="(item , index) in tit ...

  4. LiveCharts 提示框(DataTooltip)百分比一直为0.00%解决办法

    LiveCharts 提示框(DataTooltip)百分比一直为0.00%解决办法 问题描述:在使用LiveCharts 开源图标库的时候,使用CartesianChart类图表,当Series为L ...

  5. 数据误操作,删库跑路?教你使用ApexSQLLog工具从 SQLServer日志恢复数据!

    前几天同事不小心误操作,将SQLServer库的一张表的一个状态字段给刷成了一个统一状态,由于是update执行所以原来的相关状态无法确定.发生这种事情的时候我的小伙伴背后 一凉,估计心里里面想这怕是 ...

  6. 什么?你还不会身份证号码验证?最全的身份证正则验证js

    话不多说上代码 //身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码.出生日期.校验位验证 function cidInfo(code) { var city={11:" ...

  7. error: RPC failed; curl 18 transfer closed with outstanding read data remaining的解决

    解决方案也是网上搜的,总结一下 一,加大缓存区git config --global http.postBuffer 524288000这个大约是500M二.少clone一些,–depth 1git ...

  8. 1.Go 开始搞起

    link 1. IDE Go Land 服务器激活 2. 资源 中文网站 翻译组 翻译组wiki 待认领文章 入门指南 中文文档 fork 更新 github 中如何定期使用项目仓库内容更新自己 fo ...

  9. Hexo博客框架攻略

    前言 前天无意在b站看到up主CodeSheep上传的博客搭建教程,引起了我这个有需求但苦于没学过什么博客框架的小白的兴趣.于是花了两天时间终于终于把自己的博客搭建好了,踩了无数的坑,走偏了无数的路, ...

  10. (十)自动化测试pom完整文件

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...