在 CentOS 上给 MongoDB 设置权限,通常分为 系统层面权限 和 MongoDB 数据库层面权限 两部分。下面按常见场景一步步说明。
编辑配置文件(常见路径):
sudo vi /etc/mongod.conf
确保有以下内容(启用鉴权):
security:
authorization: enabled
保存后重启 MongoDB:
sudo systemctl restart mongod
先用无密码方式登录:
mongo
切换到 admin 库并创建管理员:
use admin
db.createUser({
user: "root",
pwd: "StrongPassword",
roles: [{ role: "root", db: "admin" }]
})
例如给 testdb 创建读写用户:
use testdb
db.createUser({
user: "testuser",
pwd: "TestPassword",
roles: [{ role: "readWrite", db: "testdb" }]
})
常用角色说明:
read:只读readWrite:读写dbAdmin:数据库管理root:超级管理员mongo -u testuser -p TestPassword --authenticationDatabase testdb
在 /etc/mongod.conf 中:
net:
bindIp: 127.0.0.1
如需内网访问:
bindIp: 127.0.0.1,192.168.1.100
重启:
sudo systemctl restart mongod
sudo firewall-cmd --permanent --add-port=27017/tcp
sudo firewall-cmd --reload
或仅允许指定 IP:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="27017" protocol="tcp" accept'
sudo firewall-cmd --reload
MongoDB 数据目录默认:
/var/lib/mongo
/var/log/mongodb
确保属主正确:
sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb
use admin
db.changeUserPassword("root", "NewPassword")
确认:
--authenticationDatabase如果你能提供:
我可以给你更精确的配置示例。