本教程在MongoDB-4.0.13版本下可行

1. 创建管理账号

命令行登录mongo,按WIN+R键,输入cmd打开命令行工具,输入mongo登录,输入use admin 转到admin数据库,输入db.createUser({user:“admin”,pwd:“123456”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}]})命令即可创建用户管理账号,具体不走如下:

MongoDB的用户与权限 mongodb用户权限设置_MongoDB的用户与权限


方便复制代码:

// 登录mongo
mongo  
// 显示所有数据库
show dbs
// 使用admin数据库
use admin
// 添加管理员
db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
// 查询所有系统用户,pretty()格式化输入
db.system.users.find().pretty()

2. 设置开启用户权限

首先关闭已启动的MongoDB服务,右键此电脑》管理》服务和应用程序》服务,找到你安装的mongoDb服务点击停止即可

MongoDB的用户与权限 mongodb用户权限设置_MongoDB的用户与权限_02


然后修改配置文件,在最后添加下面代码,开启权限管理,然后启动MongoDB服务

#开启用户认证
auth=TRUE

重新启动后虽然还可以使用mongo登录,但这样什么权限都没有,要使用带账号密码的登录方式才行

连接指定数据库
mongo ip:port/admin -u 用户名 -p 密码

mongo MongoDB登录命令
ip:port/admin 要登录的数据库,可省略
-u ,-p 后面跟账号密码
因为我们上面再创建管理员账号时给的权限是所有数据库的userAdmin权限,这个是只能在所有数据库管理用户,没有其他表的权限,所以其他日常操作还要创建其他用户执行,具体角色及权限看下面附录。

附录:

mongoDB默认角色大全
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
 // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)7. 内部角色:__system
具体角色:
 Read:允许用户读取指定数据库
 readWrite:允许用户读写指定数据库
 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
 userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
 root:只在admin数据库中可用。超级账号,超级权限