创建用户并授权
这篇文章的内容有参考以下文章: MongoDB 安装、设置密码、开启事务支持 MongoDB数据库设置账号密码完整步骤
MongoDB如果按默认设置安装,完成后实际上可直接连接,无需用户名和密码
但这种方式肯定不适合用在生产环境,设置账号和密码是有必要的
后续的步骤建立在安装完mongo compass的基础上,使用mongo compass(或单独安装的)mongo shell
设置系统级别的管理员账号
打开shell时,默认数据库是test
,首先,改为admin
use admin
接下来创建一个最高权限账号
db.createUser({
user: 'xxxxxx', // 用户名
pwd: 'xxxxxx', // 密码
roles:[{
role: 'root', // 角色---超级管理员才可以使用该角色
db: 'admin' // 数据库
}]
})
找到 MongoDB 安装目录,打开 mongod.cfg文件,找到以下这句:
#security:
修改为
security:
authorization: enabled
找到服务并重启
此时再登录时,会提示有错误,无法往下进行。在mongo compass中可以在截图内容处设置账号密码
在shell中登录方式如下:
// 方式一
mongo
use admin
db.auth('admin', '123456')
// 方式二
mongo admin -u admin -p 123456
给其他数据库设置用户
与设置管理员账号类似,可以设置某个数据库的用户信息
use 【collectionName】 // 跳转到需要添加用户的数据库
db.createUser({
user: 'xxxxxx', // 用户名
pwd: 'xxxxxx', // 密码
roles:[{
role: 'readWrite', // 角色
db: '【collectionName】' // 数据库名
}]
})
其他常用命令
show users // 查看当前库下的用户
db.dropUser('xxxxxx') // 删除用户
db.updateUser('xxxxxx', {pwd: 'xxxxxx'}) // 修改用户密码
db.auth('【account】', '【password】') // 密码认证
可以设置的用户角色列表
角色 | 描述 |
---|---|
Read | 允许用户读取指定数据库 readWrite:允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
root | 只在admin数据库中可用。超级账号,超级权限 |