mongodb--创建用户权限
最近在部署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--创建用户权限的更多相关文章
- 详解Oracle创建用户权限全过程
本文将介绍的是通过创建一张表,进而实现Oracle创建用户权限的过程.以下这些代码主要也就是为实现Oracle创建用户权限而编写,希望能对大家有所帮助. 注意:每条语语分开执行,结尾必须用分号; // ...
- MongoDB创建用户
1.在创建用户之前,我们首先应该启动mongodb的用户验证功能,否则建立用户是没有意义的! 2.使用 //这个123用户拥有test1数据库的数据库管理员权限,拥有test2数据库的读取权限 db. ...
- mongodb创建用户和密码
创建数据库文件夹与日志文件mkdir /home/mongodb/datamkdir /home/mongodb/logstouch(创建文件)3. 启动mongodbcd到mongodb目录下的bi ...
- mongodb创建用户(转发)
参考文档: https://www.cnblogs.com/itxiongwei/p/5520863.html MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访 ...
- MongoDB的用户权限管理
1.创建用户并授权语法:db.createUser({user:"UserName",pwd:"Password",roles:[{role:"Rol ...
- win10环境下为mongoDB创建用户并认证登录
一.配置mongoDB的bin目录到环境变量中的path;例如:D:\DatabaseService\MongoDB\Server\4.0\bin 二.cmd打开控制台,然后输入mongo回车,可以进 ...
- 为mongoDB加用户权限管理
MongoDB常用命令 > show dbs #显示数据库列表 > show collections #显示当前数据库中的集合(类似关系数据 ...
- MySQL创建用户权限结果Trigger失败
说来惭愧,MySQL我已经在只将用于,非常赞赏阶段. 甚至一些比较深层次的管理,不熟悉如何,我们要加强啊! 最近.系统测试,使用MySQL数据库,你需要在表上创建触发器.该数据库是安装在机.但.在任何 ...
- windows service(system权限)创建用户权限进程
windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限.打开任务管理器,可查看到. 通常桌面系统explorer的权限是User权限,即 ...
- 最新版 Mysql 8.0.16 创建用户权限更新回收权限
1.创建用户语法 : create user ‘写你自己的用户名’@‘写你需要哪个IP连接你的用户(%表示所有)’ identified by ‘密码’; 案例: create user ‘wangx ...
随机推荐
- 经典文本特征表示方法: TF-IDF
引言 在信息检索, 文本挖掘和自然语言处理领域, IF-IDF 这个名字, 从它在 20 世纪 70 年代初被发明, 已名震江湖近半个世纪而不曾衰歇. 它表示的简单性, 应用的有效性, 使得它成为不同 ...
- PAT 1039 Course List for Student (25分) 使用map<string, vector<int>>
题目 Zhejiang University has 40000 students and provides 2500 courses. Now given the student name list ...
- DES/3DES/AES 三种对称加密算法实现
1. 简单介绍 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES ...
- 离职冷静期文件.doc
<中华人民共和国民法典>通过十三届全国人大三次会议表决,将于2021年1月1日起施行,其中#离婚冷静期#备受关注.多方人士表示,离婚冷静期设立的出发点,不是对婚姻自由的一种破坏,而是让当事 ...
- ArchLinux的安装
ArichLinux安装教程 Arch Linux 于 2002 年发布,由 Aaron Grifin 领头,是当下最热门的 Linux 发行版之一.从设计上说,Arch Linux 试图给用户提供简 ...
- 用了一年 TIM 移动版之后,我又换回了手机 QQ
TIM,是一个很玄学的产品. 讲真,我很不喜欢 QQ 电脑版.一个原因是我很讨厌一直占着右上角这一行为:右上角是给关闭按钮实现盲操用的,QQ 这么一个聊天软件没有这么高的地位:二是我不喜欢它的多窗口: ...
- Spring AOP学习笔记03:AOP的核心实现之获取增强器
上文讲了spring是如何开启AOP的,简单点说就是将AnnotationAwareAspectJAutoProxyCreator这个类注册到容器中,因为这个类最终实现了BeanPostProcess ...
- c++ 对vector和deque进行逆序排序问题
1.vector vector<int> data1; 2.deque deque <int> data2; 逆序排序方式: 方式1.使用reverse函数 (内置数据类型 ...
- Beta冲刺<6/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第六天(05.24) 作业正文 如下 其他参考文献 ... B ...
- Jmeter(十二) - 从入门到精通 - JMeter逻辑控制器 - 终篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...