视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mongoDB中用户与权限的介绍
2020-11-27 19:33:06 责编:小采
文档
这篇文章给大家介绍的文章内容是关于mongoDB中用户与权限的介绍,有很好的参考价值,希望可以帮助到有需要的朋友。

前言

对于数据库而言,用户和权限是非常重要的一部分,因为这涉及到安全,那么mongoDB的用户和权限是怎么样的呢?

说明

环境说明

本文所用的mongoDB版本是3.6,操作系统是windows。

其他说明

限于篇幅,本文不会介绍数据库从下载到安装的过程,关于安装教程,网上有大量教程,你可以按照这些教程把它装好跑起来。本文将重点介绍mongoDB的用户和权限这一部分。

服务端和客户端

对于mongoDB,分为服务端和客户端。
在windows环境的安装目录下,直接双击打开mongod.exe,即可开启mongoDB服务。
当服务开启后,便可以双击mongo.exe打开客户端来连接到mongoDB服务。

开启授权模式

mongoDB安装后,如果直接用mongod.exe开启服务,默认是没有开启授权模式的,如果你的mongoDB没有开启授权模式,那么任何人都不需要用户名和密码也可以登录到mongoDB服务端,对你的数据库为所欲为,甚至直接删库跑路。所以,在产品环境中,请确保一定记得开启授权模式。

那么,怎么开启授权模式呢?
打开cmd,进入到安装目录的bin目录下,执行如下命令:

mongod --auth --port 27017 --dbpath /data/db

开启了授权模式后,打开mongo.exe,在admin数据库下,执行show dbs,这时,数据库会报错,提醒没有授权。如下:

用户类型

mongoDB数据库,大致分为两类用户,一种是管理员用户,一种是普通用户。

管理员

我们在admin数据库中创建一个管理员用户(userAdmin or userAdminAnyDatabase role),管理员用户可以管理普通用户。
首先,以非授权模式开启mongoDB服务。

mongod --port 27017 --dbpath /data/db

然后进入admin数据库,执行如下命令:

use admin
db.createUser(
 {
 user: "larry",
 pwd: "123456",
 roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
 }
)

当提示Successfully added user,证明这个管理员用户已经添加成功。

普通用户

当管理员用户创建成功后,我们便可以用这个管理员用户来给每个数据库来创建普通用户。
首先,关闭上面所有的mongo shell窗口。
再以授权模式开启mongoDB服务。

mongod --auth --port 27017 --dbpath /data/db

打开mongo.exe客户端,进入admin数据库,用db.auth()登录。

第一个参数是上面创建的管理员用户名larry,第二个参数是管理员用户larry的密码。
结果返回1,表示管理员larry登录成功。
接下来,用这个管理员给photo_app数据库创建一个普通用户moddx,并指定其权限为readWrite。

use photo_app
db.createUser(
{
 user: "moddx",
 pwd: "123456",
 roles: [{ role: "readWrite", db: "photo_app"}]
}
)

查看用户

全局所有账户

首先,要以管理员账户登录到admin数据库,接着执行如下命令:

db.system.users.find().pretty()

当前库下的账户

查看全局所有账户,只有管理员才可以查看,而查看当前库中的帐号,普通用户和管理员用户都可以查看,查看当前库下的帐号命令如下:

show users

删除用户

必须拥有dropUser权利的管理员帐号才能删除用户,所以,需要用管理员账户登录进行操作。
删除普通用户moddx的命令如下:

db.dropUser("moddx", {w: "majority", wtimeout: 5000})

撤销权限

撤销一个用户的权限,命令如下:

db.revokeRolesFromUser(
 "moddx",
 [
 { role: "readWrite", db: "photo_app" }
 ]
)

注意:上面命令虽然撤销了moddx用户在photo_app数据库中的读写权限,但是,用户并没有删除,依旧可以登录。

授予权限

如下命令给了用户moddx在photo_app中的读写权限,同时,给予了他在demodb数据库中的读权限

use photo_app
db.grantRolesToUser(
 "moddx",
 [ "readWrite" , { role: "read", db: "demodb" } ],
 { w: "majority" , wtimeout: 4000 }
)

修改密码

如下命令修改了photo_app中用户moddx的密码:

use photo_app
db.changeUserPassword("moddx", "newpwd")

小结

关于用户和权限部分,常用shell操作命令就这些,希望能够对你使用mongoDB带来方便。

下载本文
显示全文
专题