1. 开启访问控制
- 修改配置文件:打开MongoDB的配置文件(通常是
mongod.conf
),添加或修改以下配置项来开启访问控制:
security:
authorization: enabled
- 重启服务:修改配置文件后,重启MongoDB服务使配置生效。例如,在Linux系统下可以使用以下命令:
sudo systemctl restart mongod
2. 创建用户及角色
- 进入MongoDB shell:在开启访问控制前,需要先以无认证方式启动一个MongoDB实例(如果已经开启认证,可使用超级用户凭证登录),然后进入MongoDB shell:
mongo
- 切换到admin数据库:
use admin
- 创建超级用户:超级用户拥有管理整个MongoDB部署的所有权限。使用以下命令创建超级用户:
db.createUser({
user: "adminUser",
pwd: "adminPassword",
roles: [ { role: "root", db: "admin" } ]
});
- 创建普通用户:普通用户可以根据业务需求被赋予不同的角色。例如,为一个特定数据库创建一个读写用户:
use yourDatabaseName
db.createUser({
user: "readWriteUser",
pwd: "readWritePassword",
roles: [ { role: "readWrite", db: "yourDatabaseName" } ]
});
3. 不同用户角色的作用
- root:这是MongoDB中最强大的角色,拥有所有数据库的所有权限,包括管理用户、配置副本集、分片集群等操作。仅在需要进行全局管理任务时使用此角色。
- readWrite:该角色允许用户对指定数据库进行读写操作。常用于应用程序连接到数据库进行常规的数据操作。
- read:赋予用户对指定数据库的只读权限,适用于只需要查询数据的场景,如报表生成、数据展示等应用。
- dbAdmin:此角色赋予用户对指定数据库的管理权限,例如创建和删除集合、索引管理等,但不包括用户管理。
- userAdmin:用于管理指定数据库的用户和角色。拥有此角色的用户可以创建、修改和删除该数据库中的其他用户及其角色。
- clusterAdmin:用于管理整个集群,包括副本集和分片集群的配置、监控等操作。通常用于集群管理员。