MongoDB 简介
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
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快速入门笔记(七)MongoDB的用户管理操作的相关知识,希望对大家有所帮助!
本文向大家介绍MongoDB快速入门笔记(六)之MongoDB删除文档操作,包括了MongoDB快速入门笔记(六)之MongoDB删除文档操作的使用技巧和注意事项,需要的朋友参考一下 MongoDB是一个跨平台,面向文档的数据库,提供高性能,高可用性和易于扩展。MongoDB是工作在集合和文档上一种概念。 文档是一组键值对。文档具有动态模式。动态模式是指,在同一个集合的文件不必具有相同一组集合的文
本文向大家介绍MongoDB快速入门笔记(二)之MongoDB的概念及简单操作,包括了MongoDB快速入门笔记(二)之MongoDB的概念及简单操作的使用技巧和注意事项,需要的朋友参考一下 MongoDB是面向集合的文档式数据库,不像关系数据库那样,有表,列、行,mongoDB数据库则是由一系列的文档组成。下面给大家介绍MongoDB的概念及简单操作. 1、以下列举普通的关系型数据库和Mongo
本文向大家介绍MongoDB快速入门笔记(八)之MongoDB的java驱动操作代码讲解,包括了MongoDB快速入门笔记(八)之MongoDB的java驱动操作代码讲解的使用技巧和注意事项,需要的朋友参考一下 MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,Mongo有个内置的连接池(池大小默认为10个)。 下面代码给大家介绍MongoDB的java驱动操作
本文向大家介绍MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码,包括了MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码的使用技巧和注意事项,需要的朋友参考一下 MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库
本文向大家介绍MongoDB 用户管理,包括了MongoDB 用户管理的使用技巧和注意事项,需要的朋友参考一下 小小最近接触了MongoDB,所以这里开始学习MongoDB,之用户管理模块的相关内容。 进入MongoDB的Shell 这里输入如下的命令,进入MongoDB的shell 切换数据库 使用如上的命令,切换数据库到admin数据库。 创建超级管理员用户 创建超级管理员权限的用户 其中各个
本文向大家介绍NodeJS中的MongoDB快速入门详细教程,包括了NodeJS中的MongoDB快速入门详细教程的使用技巧和注意事项,需要的朋友参考一下 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 一