MongoDB快速入门笔记(七)MongoDB的用户管理操作

 更新时间:2016年06月02日 10:10:05   作者:tiger_zhang  
这篇文章主要介绍了MongoDB快速入门笔记(七)MongoDB的用户管理操作 的相关资料,需要的朋友可以参考下

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数据库创建、删除、集合、文档等基本操作技巧,需要的朋友可以参考下
    2020-06-06
  • 深究从MongoDB的ObjectId中获取时间信息

    深究从MongoDB的ObjectId中获取时间信息

    MongoDB默认使用_id字段作为主键,类型为ObjectId。ObjectId的生成有一定的规则,详情可以查看这篇文章MongoDB深究之ObjectId
    2017-03-03
  • MongoDB 数据库的命名、设计规范详解

    MongoDB 数据库的命名、设计规范详解

    随着MongoDB的普及和使用量的快速增长,为了规范使用,便于管理和获取更高的性能,整理此文档
    2020-02-02
  • MongoDB磁盘IO问题的3种解决方法

    MongoDB磁盘IO问题的3种解决方法

    磁盘IO是不可避免的,除去减少或延缓磁盘操作,也需要尽量的增强磁盘IO性能和吞吐量。下面这篇文章主要给大家介绍了关于MongoDB磁盘IO问题的3种解决方法,需要的朋友可以参考借鉴,需要的朋友们下面来一起看看吧
    2018-07-07
  • MongoDB如何查看版本信息详解

    MongoDB如何查看版本信息详解

    这篇文章主要给大家介绍了关于MongoDB如何查看版本信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 解决MongoDB 位置查询报错planner returned error: unable to find index for $geoNear query的问题

    解决MongoDB 位置查询报错planner returned error: unable to find

    这篇文章主要介绍了MongoDB位置查询报错planner returned error: unable to find index for $geoNear query的解决方案,需要的朋友可以参考下
    2023-08-08
  • Ubuntu16.04手动安装MongoDB的详细教程

    Ubuntu16.04手动安装MongoDB的详细教程

    本篇文章主要介绍了Ubuntu16.04手动安装MongoDB的详细教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • MongoDB中的Primary Shard详解

    MongoDB中的Primary Shard详解

    在MongoDB的Sharding架构中,每个database中都可以存储两种类型的集合,一种是未分片的集合,一种是通过分片键,被打散的集合,下面给大家介绍MongoDB中的Primary Shard详解,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • 在 Fedora 上安装 MongoDB 服务器的方法教程

    在 Fedora 上安装 MongoDB 服务器的方法教程

    Mongo是一个高性能、开源、无模式的、面向文档的数据库,它是最受欢迎的 NoSQL 数据库之一。这篇文章主要介绍了在 Fedora 上安装 MongoDB 服务器的方法,需要的朋友可以参考下
    2020-03-03
  • 关于MongoDB数据库学习路线指南

    关于MongoDB数据库学习路线指南

    这篇文章主要介绍了关于MongoDB数据库学习路线指南,给大家以学习路线地图的形式讲解该怎么学习MongoDB数据库,需要的朋友可以参考下
    2023-04-04

最新评论