在配置权限前,需先安装MongoDB。以Debian Bullseye(11)及以上版本为例,步骤如下:
sudo apt update && sudo apt upgrade -y
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update && sudo apt install -y mongodb-org
sudo systemctl start mongod && sudo systemctl enable mongod
认证是权限管理的基础,需通过配置文件开启:
sudo nano /etc/mongod.conf
security
section,添加或修改以下内容:security:
authorization: enabled
sudo systemctl restart mongod
管理员用户用于管理所有数据库及用户权限,需在admin
数据库中创建:
mongo
admin
数据库:use admin
root
角色为例,拥有最高权限):db.createUser({
user: "admin",
pwd: "YourStrongAdminPassword", // 替换为强密码
roles: ["root"] // root角色拥有所有数据库的管理权限
})
exit
根据业务需求,为特定数据库创建用户并分配最小必要权限:
mongo -u admin -p YourStrongAdminPassword --authenticationDatabase admin
mydatabase
):use mydatabase
readWrite
+dbAdmin
组合为例,满足读写及数据库管理需求):db.createUser({
user: "dbUser",
pwd: "YourUserPassword", // 替换为用户密码
roles: [
{ role: "readWrite", db: "mydatabase" }, // 读写权限
{ role: "dbAdmin", db: "mydatabase" } // 数据库管理权限(如创建索引)
]
})
exit
为增强安全性,可限制仅允许特定IP连接MongoDB:
sudo nano /etc/mongod.conf
net
section添加bindIp
和ipWhitelist
:net:
bindIp: 127.0.0.1,192.168.1.100 # 绑定本地IP及允许的远程IP
ipWhitelist:
- 127.0.0.1 # 本地访问
- 192.168.1.100 # 允许的远程IP(替换为实际IP)
sudo systemctl restart mongod
通过实际操作确认用户权限是否生效:
mongo -u dbUser -p YourUserPassword --authenticationDatabase mydatabase
use mydatabase
db.testCollection.insertOne({ name: "PermissionTest" })
authorization: enabled
,避免未授权访问。read
角色,无需写入)。auditLog
配置)跟踪用户操作,及时发现异常。