- 首页 >
- 问答 >
-
云计算 >
- MongoDB配置中Linux权限如何设置
MongoDB配置中Linux权限如何设置
小樊
35
2025-11-28 19:33:34
MongoDB在Linux上的权限设置指南
一 系统层权限设置
- 确认MongoDB运行用户与数据目录权限:多数发行版中,MongoDB以mongod用户运行,数据默认目录为**/var/lib/mongodb**(部分版本为**/var/lib/mongo**)。目录需对该用户可读写,且父目录不可过于开放。示例:
- 查看与设置数据目录属主属组:
- sudo chown -R mongod:mongod /var/lib/mongodb
- 或(旧包/某些系统):sudo chown -R mongod:mongod /var/lib/mongo
- 设置目录权限(示例为755,确保仅属主可写):
- sudo chmod 755 /var/lib/mongodb
- 日志目录权限:确保日志目录(如**/var/log/mongodb**)对mongod可写:
- sudo chown -R mongod:mongod /var/log/mongodb
- sudo chmod 755 /var/log/mongodb
- 如自定义数据目录(例如**/data/db**),同样需要:
- sudo mkdir -p /data/db
- sudo chown -R mongod:mongod /data/db
- 并在配置文件中更新storage.dbPath,然后重启服务。
二 MongoDB身份认证与数据库用户权限
- 启用访问控制:编辑配置文件**/etc/mongod.conf**,在security段开启授权:
- security:
- 重启使配置生效:sudo systemctl restart mongod
- 创建管理员账户(在admin库):
- use admin
- db.createUser({
user: “adminUser”,
pwd: “your_password”,
roles: [“root”]
})
- 创建业务库用户(在目标业务库,如myDatabase):
- use myDatabase
- db.createUser({
user: “myUser”,
pwd: “your_password”,
roles: [{ role: “readWrite”, db: “myDatabase” }]
})
- 连接与认证示例:
- 业务库用户:mongo -u myUser -p your_password --authenticationDatabase myDatabase
- 管理员:mongo -u adminUser -p your_password --authenticationDatabase admin
- 常用内置角色(按需分配):
- 数据库级:read、readWrite、dbAdmin、dbOwner、userAdmin
- 集群级:clusterAdmin 等
- 全局级:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户:root。
三 常见场景与命令清单
- 更改数据目录并修复权限(示例迁至**/new/path/to/mongo**):
- sudo systemctl stop mongod
- sudo cp -R /var/lib/mongo /var/lib/mongo_backup
- sudo mkdir -p /new/path/to/mongo
- sudo chown -R mongodb:mongodb /new/path/to/mongo
- 在/etc/mongod.conf中设置:storage.dbPath: /new/path/to/mongo
- sudo systemctl start mongod
- 在CentOS/RHEL上创建管理员并启用认证:
- 创建数据目录:sudo mkdir -p /data/db && sudo chown -R mongod:mongod /data/db
- 启动服务:sudo systemctl start mongod
- 在Mongo Shell中创建管理员(admin库):
- db.createUser({ user: “<your_username>”, pwd: “<your_password>”, roles: [“userAdminAnyDatabase”, “readWriteAnyDatabase”] })
- 编辑/etc/mongod.conf:security.authorization: enabled
- 重启:sudo systemctl restart mongod
- 登录:mongo -u <your_username> -p <your_password> --authenticationDatabase admin。
四 安全与排错要点
- 最小权限原则:业务账号仅授予所需角色(如仅readWrite到目标库),避免使用root或userAdminAnyDatabase在生产业务侧直接使用。
- 认证库要正确:创建用户时所在的库即为该用户的认证库;登录时通过–authenticationDatabase指定(管理员用admin,业务用户用其业务库)。
- 目录与属主检查:权限错误是常见故障源。确认数据目录与日志目录属主为mongod(或mongodb,视发行版而定),且权限不过度开放(如755),避免因父目录权限过宽导致访问被拒。
- 优雅启停:变更配置或数据目录前先停止服务(sudo systemctl stop mongod),变更后再启动;避免直接kill进程导致锁文件残留等问题。