MongoDB用户权限认证
关于用户的认证及权限
用户是跟着库创建的,在哪个库创建的什么权限的什么用户,只对此库有相应权限(除超级管理员以外)。
官网文档:https://docs.mongodb.com/master/reference/security/#security-methods-in-the-mongo-shell
1)内建角色
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
userAdminAnyDatabase 角色,用来管理用户,可以通过这个角色来创建、删除用户
root角色,超级管理员角色,可对所有库,所有用户做创建,删除,插入数据等操作
user:用户名
pwd:密码
role:指定用户的角色,可以用一个空数组给新用户设定空角色;在 role 字段可以指定内置角色和用户定义的角色
2)常用查询删除命令:
查看mongodb的所有用户: use admin; db.system.users.find().pretty()
查看相应库下的用户:use database; show users
删除用户:use database; db.dropUser('test') 或use admin; db.system.users.remove({user:"admin"})
删除当前库:use database; db.dropDatabase()
重置用户密码:db.changeUserPassword("wsy","wushaoyu")开启用户权限认证的情况下,需要管理员来操作重置密码
验证用户权限:use database; db.auth("wsy","wushaoyu") 为1则正确
2)创建用户
在admin数据库中添加管理员账户:
use admin
db.createUser({
... user: "admin",
... pwd: "admin",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... });
创建超级管理员用户:
db.createUser(
... {
... user: "root",
... pwd: "root",
... roles: [ { role: "root", db: "admin" } ]
... }
... );
给相应库创建相应用户及权限,在wsy数据库中添加wsy用户:
db.createUser({
... user:'wsy',
... pwd:'wushaoyu',
... roles:[
... {role:'readWrite',db:'wsy'}
... ]})
3)开启用户权限认证功能,在配置文件加入以下2行配置
security:
authorization: enabled
#重启mongodb服务
[root@mongodb02 ~]# /etc/init.d/mongod restart
#验证用户权限
[root@mongodb04 ~]# mongo --host 192.168.1.7
> use wsy
> db.auth("wsy","wushaoyu")
1
4)重置用户的密码
#切换到root超级管理员角色
> use admin
switched to db admin
> db.auth("root","root")
1
#重置wsy用户的密码
务必切换到wsy库,否则报错,在admin库找不到wsy用户
> db.changeUserPassword("wsy","WuShaoYu")
2019-03-02T19:01:41.375+0800 E QUERY [js] Error: Updating user failed: User wsy@admin not found :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.updateUser@src/mongo/shell/db.js:1541:15
DB.prototype.changeUserPassword@src/mongo/shell/db.js:1545:9
@(shell):1:1
> use wsy(
switched to db wsy
> db.changeUserPassword("wsy","WuShaoYu")
>
#测试wsy用户密码是否修改成功
> db.auth("wsy","wushaoyu")
Error: Authentication failed.
0
> db.auth("wsy","WuShaoYu")
1
#可看出修改密码成功
MongoDB用户权限认证的更多相关文章
- MongoDB开启权限认证
MongoDB默认安装完后,如果在配置文件中没有加上auth = true,是没有用户权限认证的,这样对于一个数据库来说是相对不安全的,尤其是在外网的情况下. 接下来是配置权限的过程: //切入到 ...
- MongoDB用户权限管理配置
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- mongodb 用户 权限 设置 详解
原文地址:http://blog.51yip.com/nosql/1575.html 我知道的关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限 ...
- 【用户权限】MongoDB用户权限
一.数据库用户角色: read:允许用户读取指定数据库readWrite:允许用户读写指定数据库 二.数据库管理角色:dbAdmin.dbOwner.userAdmin: dbAdmin:允许用户在指 ...
- MongoDB用户权限操作语法及示例
1.创建用户 1.1.语法格式: 1.1.1.格式及例子 >db.createUser( { user: "<name>", pwd: "<cle ...
- spring-security用户权限认证框架
大家知道在spring中有一个基于acegi开发的spring-security的权限管理模块,它是一个轻量级框架. SpringSecurity能以声明的方式来保护Web应用程序的URL访问,只需简 ...
- JWT实现用户权限认证
网上的java基础教程曾教会我们,将用户登录信息存在session(服务器端)中,需要验证的时候拿出来作对比以达到身份 验证的效果.但这种方式暴露的问题也是可想而知的: 1.Seesion:每次认证用 ...
- 【laravel54】关于用户权限认证RBAC和无限极分类
1.权限认证方面: https://packagist.org/packages/spatie/laravel-permission 用户认证 HTTP本身是无状态,通常在系统交互的过程中,使用账号或 ...
- [MongoDB] 用户权限管理
在新环境按照原来的步骤新装了MongoDB,结果出现了一些错误,才发现版本升到了2.6.1,用户权限相关的内容全部改掉了. 现在使用Role来管理用户,有一些内置的Role,也可以自定义Role. 内 ...
随机推荐
- 从0开始的Python学习011模块
简介 你已经学习了如何在你的程序中定义一次函数而重用代码.如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块.模块基本上就是一个包含了所有你定义的函数和变量的 ...
- 前端之BOM
老师的博客:https://www.cnblogs.com/liwenzhou/p/8011504.html BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScr ...
- php redis 处理websocket聊天记录
<?php ini_set('display_errors', 'on'); class chatClass { private $redis; //这个变量模拟用户当前状态,是否登录,是否可查 ...
- day正则表达式补充
# 2.正则 # 方法:findall | match | split | sub# a = 10# print(a.__hash__())# def fn():# pass# print(fn.__ ...
- Java8-2-Lambda表达式实战-一句话实现Map中按照Value排序
在上一讲中, 我们着重的讲了表达式的一些基础知识和基本的使用, 今天我们来实战一把, 对Map的Value值排序进行简化. 在以前的思路我们的做法如下: /** * * Map根据value排序; * ...
- 使用原生 JS 复制文本兼容移动端 iOS & android
注意事项 使用 JS 实现复制功能并不是很难,但是有几个需要注意的地方. 首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本. 另外如果将 input 设 ...
- photoshop实例实战(入门级)教程
PS对街拍女孩照片增加质感(2019-03-19 17:57) PS制作水火相溶特效文字图片(2019-03-19 17:49) PS制作简洁漂亮的立体抽丝文字(2019-03-19 17:16) P ...
- Unity编辑器扩展
在开发中有可能需要自己开发编辑器工具,在Unity中界面扩展常见两种情况,拿某插件为例: 1,自建窗口扩展 2,脚本Inspector显示扩展 不管使用那种样式,都需要经常用到两个类EditorGUI ...
- Idea中最最常见的快捷键
掌握如下快捷键,基本就够用了.没必要记那么多. Ø 命令:Ctrl+Shift+A可以查找所有Intellij的命令,并且每个命令后面还有其快捷键.所以它不仅是一大神键,也是查找学习快捷键的工具. ...
- kettle变量(param命名参数2)
接arg参数: 通过命令行进行变量赋值和引用 定义跟界面定义相同: 赋值(转换): 运行命令到kettle目录下 pan /file:path "/param:aa="bb&quo ...