PHP mongodb 权限,mongoDB中用户与权限的介绍

本文介绍了MongoDB中的用户管理和权限设置,包括如何开启授权模式、创建管理员和普通用户、分配权限、修改密码以及删除用户。通过实例演示了在Windows环境下使用mongoDB的授权操作,强调了在产品环境中开启授权模式的重要性,以保障数据库的安全。
摘要由CSDN通过智能技术生成

这篇文章给大家介绍的文章内容是关于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,这时,数据库会报错,提醒没有授权。如下:

4dc48aa474e94870a34c69efa1266ef1.png

用户类型

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()登录。

7896c4e293adfd09d536b6b3de9a36d2.png

第一个参数是上面创建的管理员用户名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()

0f7e55d50ff127e1a3a6729b282e9c74.png

当前库下的账户

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

bec885ab426844c9855e479913ce030d.png

删除用户

必须拥有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带来方便。

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值