debian

Debian MongoDB权限设置怎么做

小樊
59
2025-09-21 19:38:10
栏目: 云计算

Debian系统下MongoDB权限设置详细步骤

1. 安装MongoDB

首先确保Debian系统已更新,然后通过官方仓库安装MongoDB(以MongoDB 6.0为例):

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

启动MongoDB服务并设置开机自启:

sudo systemctl start mongod
sudo systemctl enable mongod

2. 启用身份验证

编辑MongoDB配置文件/etc/mongod.conf,在security section下添加或修改以下内容以启用认证:

security:
  authorization: enabled

保存文件后,重启MongoDB服务使配置生效:

sudo systemctl restart mongod

3. 创建管理员用户(超级管理员)

连接到MongoDB shell(默认无认证):

mongo

切换到admin数据库(管理员用户需存放在该数据库):

use admin

创建超级管理员用户(赋予root角色,拥有所有权限):

db.createUser({
  user: "admin",
  pwd: "YourStrongAdminPassword", // 替换为强密码
  roles: ["root"]
})

退出MongoDB shell:

exit

4. 创建数据库用户(普通用户)

4.1 连接到MongoDB(需管理员认证)

使用管理员账户登录MongoDB shell:

mongo -u admin -p YourStrongAdminPassword --authenticationDatabase admin

4.2 切换到目标数据库

假设要为用户创建mydatabase数据库的权限:

use mydatabase

4.3 创建普通用户并分配角色

根据需求分配角色(以下为常见角色组合):

退出MongoDB shell:

exit

5. 验证用户权限

5.1 验证管理员权限

使用管理员账户登录并检查状态:

mongo -u admin -p YourStrongAdminPassword --authenticationDatabase admin
use admin
db.runCommand({ connectionStatus: 1 }) // 查看当前用户权限

5.2 验证普通用户权限

appUser为例,登录并测试操作:

mongo -u appUser -p AppUserPassword --authenticationDatabase mydatabase
use mydatabase
db.testCollection.insertOne({ name: "Test Data" }) // 应成功执行(readWrite权限)
db.testCollection.deleteOne({ name: "Test Data" }) // 应成功执行(readWrite权限)
db.adminCommand({ listDatabases: 1 }) // 应失败(无admin数据库权限)

5.3 验证仅读用户权限

reportUser为例,登录并测试操作:

mongo -u reportUser -p ReportPassword --authenticationDatabase mydatabase
use mydatabase
db.testCollection.find() // 应成功执行(read权限)
db.testCollection.insertOne({ name: "Report Data" }) // 应失败(无write权限)

6. 可选:增强安全性配置

6.1 配置IP白名单

编辑/etc/mongod.conf,限制允许连接的IP地址:

net:
  bindIp: 127.0.0.1,192.168.1.100  # 允许本地和指定IP访问
  port: 27017
security:
  ipWhitelist:
    - 127.0.0.1
    - 192.168.1.100

重启MongoDB服务:

sudo systemctl restart mongod

6.2 启用TLS加密(可选但推荐)

参考MongoDB官方文档配置TLS,加密客户端与服务器之间的通信,防止数据泄露。

注意事项

0
看了该问题的人还看了