MONGODB 权限认证
使用mongoDB 是从2.4 版本开始的,但那时的权限管理相对比较简单。也就没有去弄这个。
现在再回头看几个版本的权限管理,看到各个版本间都在变化。
并且集群与单机也有很大的不同,
下面是以2.6版本来简单配置了一个环境进行测试。
建立一个集群环境:
config={_id:'test1',members:[{_id:0,host:'192.168.2.113:27001',priority:10},{_id:1,host:'192.168.2.113:27002',priority:8}]}}
rs.initiate(config)
rs.addArb('192.168.2.113:27003')
配置两个用户:
use admin
#数据库管理员
db.createUser({user:'admin',pwd:'123',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
#系统管理员
db.createUser({user:'root',pwd:'123',roles:[{role:'root',db:'admin'}]})
#test
use test;
db.createUser({user:'tang',pwd:'123',roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'root',db:'admin'}]});
db.createUser({user:'test',pwd:'123456',roles:[{role:'dbAdmin',db:'test'}]})
#建立一个test 只读权限用户
db.createUser({user:'readonly',pwd:'123456',roles:[{role:'read',db:'test'}]})
#生成对 TEST 库有读写权限的用户
db.createUser({user:'user',pwd:'123',roles:[{role:'readWrite',db:'test'},{role:'dbAdmin',db:'test'}]})
#生成一个对所有库都有读写的用户
use admin;
db.createUser({user:'wang',pwd:'123',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})
建立一个测试库
use test
for (var i=1; i<=100; i++) {
mid=parseInt(i/100);
db.test.insert({_id:i,mid:mid,ts:new Date()});
};
#论证
test1:PRIMARY> use admin
test1:PRIMARY> db.auth('wang','123')
1
test1:PRIMARY> use test
switched to db test
test1:PRIMARY> db.test.find()
{ "_id" : 1, "mid" : 0, "ts" : ISODate("2016-03-23T06:43:59.625Z") }
{ "_id" : 2, "mid" : 0, "ts" : ISODate("2016-03-23T06:44:00.131Z") }
{ "_id" : 3, "mid" : 0, "ts" : ISODate("2016-03-23T06:44:00.132Z") }
test1:PRIMARY> use MTEST
switched to db MTEST
test1:PRIMARY> show tables;
app
system.indexes
test1:PRIMARY> db.app.find()
{ "_id" : 1, "name" : "app test" }
test1:PRIMARY> show dbs;
Mtest 0.078GB
登录:
./mongo -port 27001 -u 'li' -p '123' --authenticationDatabase test
#登录时加上认证的数据库名称如果是 *AnyDatabase 类的role,那就是admin 了。
#python test code
import pymongo
import datetime
#test read user
test_conn = pymongo.MongoClient('mongodb://readonly:123456@192.168.2.113:27001/admin')
test_db = test_conn.test
test_db.test.update({"_id":1},{"$set":{"mid":9999}})
#test_db.authenticate('li',password='123')
cur_test = test_db.test.find().limit(10)
for row in cur_test:
print 'id=%d,mid=%d'%(row["_id"],row['mid'])
Mtest_db = test_conn.Mtest
cur_app = Mtest_db.app.find()
for row in cur_app:
print 'id=%d,name=%s'%(row["_id"],row['name'])
#配置
1. #生成key 文件
[mongo@localhost ~]$ openssl rand -base64 741 > /home/mongo/.ssh/mongodb_key --文件内容采base64编码
[mongo@localhost ~]$chmod 600 /home/mongo/.ssh/mongodb_key
2. 配置文件:(集群节点都加上)
[mongo@localhost bin]$ cat rep_p.conf
dbpath=/mnt/mongodb/data2/v2_p/
logpath=/mnt/mongodb/log/v2_plog.log
port=27001
logappend=true
fork=true
replSet=test1
oplogSize=100
auth=true
keyFile=/home/mongo/.ssh/mongodb_key
3.#使用参数文件启动
./mongod -f rep_p.conf
mongodb3.0 版本比 2.6 版本增加了dbOwner 角色。
而mongodb 3.2 版本,又增加了clusterManager,clusterMonitor,hostManager,Back ,restore 等一些管理角色。
这也说明,mongodb的权限管理功能,一直在进步。
( dbAdmin 角色是没有读写数据库功能的,这点和其它的数据库权限有些不同。)
MONGODB 权限认证相关推荐
- MongoDB 权限认证
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),因为考虑到数据安全的原因特地花了一点时间研究了一下,网上搜出来的解 ...
- 开启docker中MongoDB的认证授权
开启docker中MongoDB的认证授权 思路 开启MongoDB服务后,默认是没有权限验证的.直接通过IP加端口就可以远程访问数据库,并对数据库进行任意操作.下面介绍一下如何开启docker中Mo ...
- MongoDB权限控制
文章目录 权限控制API 针对所有数据库的角色 针对单个数据库的角色 副本与集群的权限控制 小结 权限控制API 到目前为止,数据库都处于"裸奔"的状态,任何用户都可以连接到任何数 ...
- MongoDB安全认证
1.安全认证概述 MongoDB 默认是没有账号的,可以直接连接,无须身份验证.实际项目中肯定是要权限验证的,否则后果不堪设想.从2016年开始 发生了多起MongoDB黑客赎金事件,大部分Mongo ...
- 还在用Spring Security?推荐你一款使用简单、功能强大的权限认证框架
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/qq_40058629/article/ details/116692302 我们先看一下官网介绍 ...
- 这可能是史上功能最全的Java权限认证框架!
点击关注公众号,Java干货及时送达 今天给大家推荐的这个开源项目超级棒,可能是史上功能最全的 Java 权限认证框架! 这个开源项目就是:sa-token . Sa-Token是什么? sa-tok ...
- mongodb权限管理02
mongodb权限管理02 接下来,mongodb 的配置文件中如何实现密码的登录呢? 我们之前是直接用的这个命令 [root@prd3-mysql-0-36 ~]# mongod -f /ivarg ...
- SpringBoot学习:整合shiro(身份认证和权限认证),使用EhCache缓存
一.在pom中引入依赖jar包 1 <properties> 2 <shiro.version>1.3.2</shiro.version> 3 </prope ...
- MVC项目开发中那些用到的知识点(登录权限认证)
话说从开始接触MVC到现在也有一段时间了,记得好像是从2012年8月初开始做项目的.就记录一下自己所用到的且认为重要的知识点吧. 首先做的便是一个登录,那么就用到了登录权限认证: public cla ...
最新文章
- C++11中shared_ptr的使用
- Spring mvc集成log4j2
- Struts2中 Result类型配置详解
- 【⭐C++宝藏男孩⭐】C++ string字符串比较
- 【普及组模拟赛】作业
- ISE调用Notepad++并且实现错误高亮定位的方法
- 关于压缩工具 7z(7-zip) 的选项 -so(从标准输出流写入数据)的解读
- 关于DataFormWebPart中CreatedModifiedInfo信息的分开使用
- 五分钟,手撸一个Spring容器!
- 渗透测试入门23之OSCP渗透测试认证经验分享
- Java练习02 打印三角形
- “云原生”为何而生?
- SBuild 0.2.0 发布,基于 Scala 的构建系统
- 电机编码器调零步骤_什么是无刷直流电机换向的最有效方法?
- android无法解码avcmp4,android - Android中的MediaCodec编码的H.264 avc视频无法播放 - 堆栈内存溢出...
- 转帖:三种快乐物质——多巴胺、血清素、内啡肽
- LDO稳压芯片-内部框图及选型参数
- 段码液晶屏驱动芯片如何选择
- C语言实现“勾股树”——毕达哥拉斯树
- 远程桌面连接的计算机是什么,连接远程桌面,连接远程桌面的凭证是什么