阅读量:36
MongoDB Ubuntu版用户权限设置指南
一、前置准备
- 安装MongoDB:若未安装,可通过以下命令完成安装:
sudo apt update && sudo apt install -y mongodb-org - 启动MongoDB服务:安装完成后启动服务并设置开机自启:
sudo systemctl start mongod && sudo systemctl enable mongod
二、启用访问控制(必选)
MongoDB默认无认证,需通过配置mongod.conf启用授权:
- 编辑配置文件:
sudo nano /etc/mongod.conf - 在
securitysection添加以下内容(若无securitysection则新建):security: authorization: enabled - 保存文件并重启服务:
sudo systemctl restart mongod
三、创建管理员用户(用于用户管理)
管理员用户需具备userAdminAnyDatabase(管理所有数据库用户)和readWriteAnyDatabase(读写所有数据库)权限,建议创建在admin数据库:
- 连接到MongoDB Shell:
mongo - 切换至
admin数据库:use admin - 创建管理员用户(以
adminUser为例):db.createUser({ user: "adminUser", pwd: "StrongPassword123!", // 使用强密码 roles: ["userAdminAnyDatabase", "readWriteAnyDatabase"] }) - 退出Shell:
exit
四、创建普通用户并分配权限
根据需求为用户分配不同角色,常见场景如下:
1. 单数据库读写权限(推荐)
若用户仅需访问特定数据库(如myDatabase),可分配readWrite角色:
- 连接到MongoDB Shell:
mongo - 切换至目标数据库:
use myDatabase - 创建用户(以
myUser为例)并分配权限:db.createUser({ user: "myUser", pwd: "UserPassword456!", roles: ["readWrite"] // 读写权限 }) - 退出Shell:
exit
2. 数据库所有者权限(完全控制)
若用户需管理数据库结构(如创建集合、索引),可分配dbOwner角色:
use myDatabase
db.createUser({
user: "dbOwnerUser",
pwd: "OwnerPassword789!",
roles: ["dbOwner"] // 数据库所有者权限
})
exit
3. 只读权限(仅查询)
若用户仅需查询数据,可分配read角色:
use myDatabase
db.createUser({
user: "readOnlyUser",
pwd: "ReadOnlyPass123!",
roles: ["read"] // 只读权限
})
exit
五、使用用户连接数据库
创建用户后,需通过认证连接:
# 连接至特定数据库(如myDatabase)
mongo -u myUser -p UserPassword456 --authenticationDatabase myDatabase
# 连接至管理员账户(用于管理用户)
mongo -u adminUser -p StrongPassword123 --authenticationDatabase admin
六、验证权限
- 使用创建的用户连接后,尝试执行操作:
- 读写权限用户:可执行
insert、update、find等操作。 - 只读权限用户:执行
insert会报错not authorized。
- 读写权限用户:可执行
- 通过
db.getUser("username")查看用户角色:use myDatabase db.getUser("myUser")
注意事项
- 强密码策略:避免使用简单密码,建议包含大小写字母、数字和特殊字符。
- 最小权限原则:仅分配用户所需的最小权限,降低安全风险。
- 定期审计:通过
db.getUsers()查看所有用户及角色,及时清理闲置账户。 - 网络访问控制:结合
mongod.conf中的bindIp(限制监听IP)和系统防火墙(如ufw),限制MongoDB端口(默认27017)的访问范围。