MongoDB用户、角色和权限管理

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

一、概念理解

1、用户概念
Mongodb的用户是由 用户名+所属库名组成
例如:
登录mongo testdb1 ,创建用户testuser
登录mongo testdb2 ,创建用户testuserbr/>那上面创建的用户分别是:testuser@testdb1,testuser@testdb2
也就是说在哪个库下面创建用户,这个用户就是哪个库的

2、角色概念
Mongodb的授权采用了角色授权的方法,每个角色包括一组权限。
Mongodb已经定义好了的角色叫内建角色,我们也可以自定义角色。
这儿主要介绍内建角色,Mongodb内建角色包括下面几类:
读写权限: read/readWrite 读写库的权限
数据库管理角色: dbAdmin 某数据库管理权限
userAdmin 某数据库用户的管理权限,包括创建用户,授权的管理
dbOwner 某数据库的所有者,拥有该库的所有权限,包括readWrite,dbAdmin和userAdmin权限
集群权限 :
备份和恢复角色: bakcup restore
所有数据库角色: readAnyDatabase
readWriteAnyDatabase
dbAdminAnyDatabase
userAdminAnyDatabase
超级用户角色: root
内部角色 : __system 不建议使用

二、搭建认证环境和认证登录
1、找到mongodb配置文件,设置noauth=true
重启Mongodb后,登录admin账号,创建一个超级权限用户
use admin
db.createUser({user:'root',pwd:'root',roles:[{ "role" : "root", "db" : "admin" }]});

2、关闭mongodb

3、启用认证参数
生成加密文件,并将加密文件拷贝到各节点
mkdir /usr/local/mongodb/keyfile
openssl rand -base64 100 > /usr/local/mongodb/keyfile/key
chmod -R 600 /usr/local/mongodb/keyfile/key
修改各节点配置配置文件
auth = true
keyFile = /usr/local/mongodb/keyfile/key

4、启动Mongodb

5、认证登录

use admin
switched to db admin
db.auth('root','root')

1

use hong
switched to db hong
show collections;
liujing
system.users
db.liujing.find();
{ "_id" : ObjectId("56f255b77fa46acddeb4507b"), "name" : "liujing" }

三、用户授权详解
1、创建用户并授权
语法:db.createUser({user:"UserName",pwd:"Password",roles:[{role:"RoleName",db:"Target_DBName"}]})
首先选择在哪个库创建用户,如test:use test;
创建用户有3项需要提供:用户名,密码,角色列表
例如我要在test下面创建用testuser,密码为testpwd,角色列表包括test库的readWrite角色和userAdmin角色:
db.createUser({user:"testuser",pwd:"testpwd",roles:[{role:"readWrite",db:"test"},{role:"userAdmin",db:"test"}]})

2、修改密码
首先进入目标库:use test
db.changeUserPassword('testuser','testPWD');

3、添加角色
首先进入目标库:use test
db.grantRolesToUser( "testuser", [ { role: "read",db:"admin"} ] )

4、回收角色权限
首先进入目标库:use test
db.revokeRolesFromUser("testuser",[ { role: "read",db:"admin"} ] )

5、删除用户
首先进入目标库:use test
db.dropUser("testuser")

四、注意事项

1、MongodbVOE版本太低,可能导致远程连接mongodb认证失败,建议升级版本或者更换其它GUI工具
2、远程连接Mongodb一定要把mongodb服务器的防火墙打开,否则连接不上

参考博文:
http://blog.csdn.net/dbabruce/article/details/50963956
http://blog.51cto.com/wjlking/1792629

     本文转自1321385590 51CTO博客,原文链接:http://blog.51cto.com/linux10000/2061498,如需转载请自行联系原作者





相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL 安全 MongoDB
Mongo DB之用户与权限管理、备份与恢复管理以及客户端工具的使用
MongoDB是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
858 1
|
NoSQL 安全 MongoDB
mongodb设置用户账号密码登录
今天有个同事的项目中mongodb 被黑客攻占了,然后数据库被清掉,留下了一堆“案发现场”,还整了一个段话,附上给大家伙瞧瞧。。。。
2847 1
mongodb设置用户账号密码登录
|
NoSQL MongoDB 数据库
二.MongoDB入门-Mongodb权限管理
MongoDB入门-Mongodb权限管理
|
存储 NoSQL 安全
MongoDB分布式存储数据库系列(三)------用户与权限管理
Mongodb 作为时下最为热门的数据库,那么其安全验证也是必不可少的
96 0
|
存储 监控 NoSQL
🍃MongoDB结合Koa2做用户登录验证
🍃MongoDB结合Koa2做用户登录验证
294 0
🍃MongoDB结合Koa2做用户登录验证
|
存储 安全 NoSQL
云MongoDB网络安全策略和权限管理体系
阿里云MongoDB在市场上实际使用时,如何保障数据库安全性?又是如何防止数据库受到攻击?本文将带领你了解云数据库MongoDB云环境的网络安全策略和MongoDB自身的权限管理体系。
2989 0
|
SQL 存储 NoSQL
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
引入一套统一的新功能,以满足开发者在构建现代应用程序方面日益增长的数据需求
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
|
NoSQL MongoDB 数据库
MongoDB 用户角色管理
MongoDB 服务默认是没有账号密码的,客户端连接上即可进行各种操作。如果在配置文件中,指定了auth=true,即开启了认证,那么客户端连接后需要认证才能执行操作。
MongoDB 用户角色管理
|
存储 NoSQL MongoDB
在MongoDB中处理"用户-角色"关系
一个简单的用户-角色-角色数据三者之间关系的MODEL设计的前后两种方式.前者用到了引用,后者用的是嵌套.象这种用户-角色的话,用嵌套更适合.毕竟一个用户的角色数据通常都不多.
807 0