MongoDB用户管理
文章目录
- 用户管理
- 认证数据库
- 用户管理
- 常用的内置角色
- 数据库用户角色
- 数据库管理角色
- 创建用户
- 示例
- 删除用户
- 查看用户信息
- 验证方式
- 补充
- 参考文档
用户管理
MongoDB使用基于角色的访问控制(RBAC)来确定用户的访问权限。用户被赋予一个或多个角色决定了用户的访问或特权MongoDB的资源和操作 用户可以执行。用户应该只拥有确保系统具有最小权限所需的最小权限集。
MongoDB系统的每个应用程序和用户都应映射到不同的用户。此访问隔离有助于访问撤销和持续的用户维护。
认证数据库
添加用户时,可以在特定数据库中创建用户。该数据库是用户的身份验证数据库。
用户可以拥有跨不同数据库的权限; 也就是说,一个数据库中创建的用户可以拥有对其他数据库执行操作的权限。
用户的名称和身份验证数据库充当该用户的唯一标识符。也就是说,如果两个用户具有相同的名称但是在不同的数据库中创建,则它们是两个单独的用户。如果您打算让单个用户拥有多个数据库的权限,请在适用的数据库中创建具有角色的单个用户,而不是在不同的数据库中多次创建用户。
用户管理
常用的内置角色
数据库用户角色
- read:提供读取数据的权限
- readWrite:提供对数据的读写权限
数据库管理角色
- dbAdmin:提供执行管理任务(如与架构相关的任务,索引和收集统计信息)的功能。此角色不授予用户和角色管理权限。
- dbOwner:数据库所有者可以对数据库执行任何管理操作。
- userAdmin:提供在当前数据库上创建和修改角色和用户的功能。由于该
userAdmin
角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地提供 对数据库的超级用户访问权限,或者,如果范围限定为admin
数据库,则提供对群集的访问权限。
创建用户
db.createUser(
{
user: "<name>", # 用户名
pwd: "<cleartext password>", # 密码
customData: { <any information> }, # 任意内容,相当于备注
roles: [
{ role: "<role>", # 内置常用的角色有root,dbAdmin,readWrite,read
db: "<database>" } | "<role>", # 管理的数据库对象
...(可以添加多个角色)
]})
示例
示例1:切换到reporting认证数据库,创建用户reportsUser,密码为’12345678’,权限为对reporting,products,sales拥有只读权限,对accounts库拥有读写权限
use reporting
db.createUser(
{
user: "reportsUser",
pwd: "12345678",
roles: [
{ role: "read", db: "reporting" },
{ role: "read", db: "products" },
{ role: "read", db: "sales" },
{ role: "readWrite", db: "accounts" }
]
}
)
示例2:创建超级管理员用户,管理所有数据库
use admin
db.createUser(
{
user: "root",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
})
示例3:test库管理用户
use test
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "dbAdmin", db: "test" } ]
})
示例4:创建app1用户,对test拥有读写权限
use test
db.createUser(
{
user: "app1",
pwd: "password",
roles: [ { role: "readWrite" ,db: "test" } ]
})
示例5:创建app2用户,对test只读权限
use test
db.createUser(
{
user: "app2",
pwd: "password",
roles: [ { role: "read" } ]
})
删除用户
use admin
db.dropUser("root")
查看用户信息
db.system.users.find().pretty();
验证方式
连接实例时使用mongo命令行身份验证选项(–username, —password和 —authenticationDatabase),或mongodmongos
方式1:
mongo -umyUserAdmin -pabc123 127.0.0.1:27017/admin
方式2:
mongo —port 27017 -u myUserAdmin -p ‘abc123’ —authenticationDatabase ‘admin’
首先连接到mongod或mongos 实例,然后针对身份验证数据库运行authenticate命令或 db.auth()方法。
连接到数据库
mongo
切换到验证数据库
use admin
db.auth(‘myUserAdmin’,’abc123’)
补充
需要在配置文件开启验证
security:
authorization: enabled # 打开认证功能
参考文档
- https://docs.mongodb.com/manual/
还没有评论,来说两句吧...