MongoDB:用户管理

用户权限

mongodb安装后,默认不需要用户登陆,可直接操作数据库,这是在真实生产中是非常危险的,可以通过使用为mongodb创建用户的方式来降低风险。

下面是mongodb中的常用权限:

权限名 描述
read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数
userAdmin 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
cluterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root 只在admin数据库中可用,超级账号,超级权限

创建用户

先进入mongodb命令行

#必须先进入admin库
use admin;
#创建一个用户
db.createUser({'user':'root','pwd':'root','roles':[{'role':'root','db':'admin'}],'customData':{'info':'first mongodb user'}});

image-20210109214720058

查看已经创建的用户:

show users;

image-20210109214827027

# 或者使用这条命令也能查询所创建的用户
db.system.users.find()

重启MongoDB开启认证

添加完用户后,如若想要使用用户操作,必须修改MongoDB配置再重启。

#关闭MongoDB服务
db.shutdownServer()

修改配置文件

vi /usr/local/mongo/conf/mongodb.conf

添加auth=true,然后重启mongodb

image-20210109215531744

进入mongodb命令行,发现所示信息与之前没有开启auth的不一样了,信息少了很多。

image-20210109215813337

认证:

use admin;
db.auth('root','root');
#返回1,登陆成功,返回0,登陆失败

image-20210109215956151

修改用户

修改用户与创建用户语法类似

db.updateUser('guest',{'pwd':'123','roles':[{'role':'readAnyDatabase','db':'admin'}]});

修改用户密码:

db.changeUserPassword("guest","guest");

删除用户

db.dropUser('guest');
原文地址:https://www.cnblogs.com/wwjj4811/p/14256706.html