用户操作
用户列表
| 角色 | 描述 |
|---|---|
| read | 读取当前数据库中的任何集合的数据 |
| readWrite | 可以读写当前数据库中的任何集合,读写包括插入、删除、更新文档以及创建、重命名、删除集合 |
| readAnyDatabase | 可以读取任何数据库的任何集合的数据 |
| readWriteAnyDatabase | 可以读写任何数据库中的任何集合 |
| dbAdmin | 读写当前数据库以及清理、修改、压缩、获取统计信息和执行检查 |
| dbAdminAnyDatabase | 可以读写任何数据库以及清理、修改、压缩、获取统计信息和执行检查 |
| dbOwner | 数据库所有者,拥有该库所有操作权限,包括dbAdmin、readWrite、userAdmin |
| userAdmin | 当前库创建、修改用户信息的权限 |
| userAdminAnyDatabase | 所有库创建、修改用户信息的权限 |
| clusterManager | 提供集群的管理和监视操作。具有此角色的用户可以访问、配置和访问本地数据库,它们分别用于分片和复制中。 |
| clusterMonitor | 提供对监视工具的只读访问权限,比如MongoDB Cloud Manager和Ops Manager |
| clusterAdmin | 让用户能够管理MongoDB,包括连接、集群、复制、列出数据库、创建数据库、和删除数据库 |
| hostManager | 提供监视和管理服务器的能力 |
| backup | 提供备份数据所需的最小权限。 该角色有足够的权限使用MongoDB Cloud Manager、Ops Manager的备用代理或者使用mongodump |
| restore | 提供对非系统集合的转换。提供从备份中恢复数据所需的特权,这些备份不会对数据进行重新配置。当还原数据时,此角色足够。 |
| root | 提供对所有资源的访问权限。集合了readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、backup这些角色的所有权限 |
创建用户
创建一个root权限的用户
test> use admin
switched to db admin
admin> db.createUser({user:"root",pwd:"aminglinux.com",roles:["root"]})
{ ok: 1 }
创建完用户,需要修改配置文件开启认证,才能使用用户名、密码登录
vi /usr/local/mongodb/conf/mongodb.conf ##最后面增加
# 安全配置
security:
authorization: enabled
重启服务
systemctl restart mongodb
再次登录
mongosh
> use admin
> db.auth("root","aminglinux.com")
{ ok: 1 }
也可以直接使用用户名、密码登录,需要手动输入密码
mongosh mongodb://root@127.0.0.1/admin
Enter password: **************
Current Mongosh Log ID: 633beb166731317dd6616728
针对某一个库,创建用户,并指定客户端ip
> use testdb
> db.createUser(
{
user: "user1",
pwd: "aminglinux",
roles: [ {role: 'dbOwner', db: 'testdb'} ],
authenticationRestrictions: [ {
clientSource: ["192.168.222.0/24"],
serverAddress: ["192.168.222.0/24"]
} ]
}
)
测试连接
mongosh mongodb://user1@192.168.222.128/testdb
Enter password: **********