跳到主要内容

创建用户并授权

这篇文章的内容有参考以下文章: 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

找到服务并重启 CreateAndGrantUser-1 此时再登录时,会提示有错误,无法往下进行。在mongo compass中可以在截图内容处设置账号密码 CreateAndGrantUser-2 在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数据库中可用。超级账号,超级权限