# 用户操作 ## 用户列表 | 角色 | 描述| | :---- | :---- | | 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 } ``` 创建完用户,需要修改配置文件开启认证,才能使用用户名、密码登录 ```bash vi /usr/local/mongodb/conf/mongodb.conf ##最后面增加 # 安全配置 security: authorization: enabled ``` 重启服务 ```bash 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: ********** ```