用户操作

用户列表

角色 描述
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: **********