MongoDB快速入门学习笔记7 MongoDB的用户管理操作
1、修改启动MongoDB时要求用户验证
加参数 --auth 即可。
现在我们把MongoDB服务删除,再重新添加服务
mongod --dbpath "D:\work\MongoDB\data" --logpath "D:\work\MongoDB\log\mongodb.log" --install --serviceName "MongoDB" --auth
2、创建用户,并使用创建的用户登录
打开shell操作界面,默认test数据,再查看所有数据库,发现报错,因为没有用户验证。
使用db.auth("user","pwd")进行用户验证。
user:用户名
pwd:密码
因为数据库中没有用户,所以需要先使用无用户验证的方式启动数据,在admin数据库下新建用户。
db.createUser({user:"", pwd:"", roles:[{role:"", db:""}]})
在当前数据库下创建一个用户
user:用户名
pwd:密码
roles:角色信息
[role:角色名, db:对指定数据库的操作]
> db.createUser({user:"admin", pwd:"admin", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
在使用用户验证的方式启动数据库,在数据库admin中,使用admin登录
> db.auth("admin","admin")
1
状态1表示验证成功,0表示验证失败
创建用户默认给当前使用的数据下创建用户,
例如:当前使用的数据是admin,在admin数据下新建用户
db.createUser({user:"zyh", pwd:"zyh", roles:[{role:"readWrite", db:"zyhdb"}]})
在admin数据库下使用zyh登录,可读写zyhdb的collection。
当在zyhdb下,无法使用zyh登录,因为用户zyh是在admin数据库下。
3、查看当前数据下的用户
show users 显示当前数据库下所有的用户
使用有用户管理权限的用户登录才能看见,例如使用zyh登录后,执行会报错;使用admin登录后,显示用户
> db.auth("zyh","zyh")
1
> show users
2016-06-01T20:32:30.639+0800 E QUERY [thread1] Error: not authorized on admin to execute command { usersInfo: 1.0 } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1523:1
shellHelper.show@src/mongo/shell/utils.js:743:9
shellHelper@src/mongo/shell/utils.js:650:15
@(shellhelp2):1:1 > db.auth("admin","admin")
1
> show users
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
{
"_id" : "admin.zyh",
"user" : "zyh",
"db" : "admin",
"roles" : [
{
"role" : "readWrite",
"db" : "zyhdb"
}
]
}
还可以使用db.getUsers()查看所有的用户
使用db.getUser("user")查询指定用户的具体信息
4、修改用户信息
db.changeUserPassword("user", "newpwd"),修改密码
user:用户名
newpwd:新的密码
db.updateUser("user", {roles:[{role:"", db:""}]})
修改用户信息
db.grantRolesToUser("user", [{role:"", db:""}])
追加角色
db.revokeRolesFromUser("user", [{role:"", db:""}])
取消角色
5、删除用户
db.dropUser("user") 删除指定用户
db.dropAllUsers() 删除当前数据下所有用户
附:常用内置角色说明
数据库用户角色(每个数据库都有的角色)
read 对non-system集合的读取权限,以及以下system集合的读取权限:system.indexes,system.js,system.namespaces
readWrite 对non-system集合的读写权限,以及system.js上的读写权限
数据库管理角色(每个数据库都包含的数据管理角色)
dbAdmin 完成管理性任务的权限,比如schema相关任务、索引、统计信息收集。不能用于管理用户和角色
dbOwner 管理数据库需要的所有权限。包含(readWrite、dbAdmin、userAdmin角色的权限)
userAdmin 在当前数据库创建和修改角色和用户的权限
集群管理角色
admin数据库包含以下角色用于管理整个系统,而不是只针对单个数据库
clusterAmin 提供集群管理的最大权限。包含了clusterManager、clusterMonitor、hostManager角色的权限
clusterManager 管理和监控集群,可以访问local和config数据库。
clusterMonitor 对集群的读权限
hostManager 管理和健康servers
备份和还原角色
admin数据库包含以下角色用于备份和还原数据
backup 备份权限
restore 还原权限
all-database roles
admin数据提供以下角色,对所有数据库都有效。
readAnyDatabase 提供对所有数据库的读权限
readWriteAnyDatabase 提供对所有数据库的写权限
userAdminAnyDatabase 提供对所有数据库用户的管理权限
dbAdminAnyDatabase 对所有数据库的dbAdmin权限
超级角色
角色 说明
root 拥有最高权限
另外角色也可以自定义设置。
MongoDB快速入门学习笔记7 MongoDB的用户管理操作的更多相关文章
- MongoDB快速入门学习笔记8 MongoDB的java驱动操作
import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.bson.D ...
- MongoDB快速入门学习笔记6 MongoDB的文档删除操作
db.集合名称.remove({query}, justOne)query:过滤条件,可选justOne:是否只删除查询到的第一条数据,值为true或者1时,只删除一条数据,默认为false,可选. ...
- MongoDB快速入门学习笔记5 MongoDB的文档修改操作
db.集合名称.update({query},{update},upsert, multi})query:过滤条件update:修改内容upsert:如果不存在查询条件查出的记录,是否插入一条数据,默 ...
- MongoDB快速入门学习笔记3 MongoDB的文档插入操作
1.文档的数据存储格式为BSON,类似于JSON.MongoDB插入数据时会检验数据中是否有“_id”,如果没有会自动生成.shell操作有insert和save两种方法.当插入一条数据有“_id”值 ...
- MongoDB快速入门学习笔记2 MongoDB的概念及简单操作
1.以下列举普通的关系型数据库和MongoDB数据库简单概念上的区别: 关系型数据库 MongoDB数据库 说明 database database 数据库 table collection 数据库表 ...
- MongoDB快速入门学习笔记4 MongoDB的文档查询操作
先把student删除,再重新插入数据 > db.student.drop() true > db.student.insert([{ "_id" : 1, " ...
- MongoDB快速入门学习笔记1 windows安装MongoDB
1.安装MongoDB 从MongoDB官网上下载MongoDB,我下载的版本是64位的3.2.6.下载完以后直接安装,我的安装目录是D:\work\MongoDB. 2.配置MongoDB的环境变量 ...
- 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)
[原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...
- Sass简单、快速上手_Sass快速入门学习笔记总结
Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...
随机推荐
- 【Mood-13】Android --如何从初级工程师进化为高级工程师
一 明确自我定位 现在你是初级工程师,但是你想当个高级工程师,所 以,你就要给自己定个目标,即:我是要成为高级工程师的男人.有了这个定位,并且努力朝着这个目标去努力,然后内心深处就会有一个感觉,这个 ...
- spring 中使用quartz实现定时任务
一般开发系统,使用定时任务非常常见.当然也可以用Java实现.比如定时器.大致如下: 1: public static void main(String[] args) { 2: Timer time ...
- 修复SQL中的孤立账户
EXEC sys.sp_change_users_login 'AUTO_FIX','登录名',NULL,'登录密码'
- 详细步骤教你安装yii高级应用程序和配置composer环境
现在开始工作,应公司的要求,要开始接触yii了,作为一个没有碰过yii的小白,首先一个问题就是怎么去安装高级程序应用,过程不麻烦,但是也需要细心和耐心,百度资料里面的教程都不太全,漏这漏那的,所以在这 ...
- [Asp.Net] web api 部署注意事项
在将web api项目部署到IIS上的时候 要将应用程序池设置成.net framework 4.0版本
- hdu-1856 More is better---带权并查集
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1856 题目大意: 一个并查集 计算每个集合的元素 找出元素最多的那个集合,输出元素的个数 解题思路: ...
- mkfs.xfs 命令找不到的解决方法
对硬盘进行格式化: # mkfs.xfs /dev/sdb1 系统显示: mkfs.xfs error: command not found. 可能是系统不完全安装 运行 which mkfs 查看 ...
- kubernetes-控制器Deployment和DaemonSet(八)
Pod与controllers的关系 •controllers:在集群上管理和运行容器的对象•通过label-selector相关联•Pod通过控制器实现应用的运维,如伸缩,升级等 控制器又称工作负载 ...
- 利用原生JS实现类似浏览器查找高亮功能(转载)
利用原生JS实现类似浏览器查找高亮功能 在完成 Navify 时,增加一个类似浏览器ctrl+f查找并该高亮的功能,在此进行一点总结: 需求 在.content中有许多.box,需要在.box中找出搜 ...
- 2017年9月11日 梁勇 java教材 编程练习题 第二章 2.15 键盘 读取两个点的坐标值(小数),控制台输出两点间距离。
package com.swift; import java.util.Scanner; public class PToP { public static void main(String[] ar ...