首先确保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
编辑MongoDB配置文件/etc/mongod.conf,在security section下添加或修改以下内容以启用认证:
security:
authorization: enabled
保存文件后,重启MongoDB服务使配置生效:
sudo systemctl restart mongod
连接到MongoDB shell(默认无认证):
mongo
切换到admin数据库(管理员用户需存放在该数据库):
use admin
创建超级管理员用户(赋予root角色,拥有所有权限):
db.createUser({
user: "admin",
pwd: "YourStrongAdminPassword", // 替换为强密码
roles: ["root"]
})
退出MongoDB shell:
exit
使用管理员账户登录MongoDB shell:
mongo -u admin -p YourStrongAdminPassword --authenticationDatabase admin
假设要为用户创建mydatabase数据库的权限:
use mydatabase
根据需求分配角色(以下为常见角色组合):
db.createUser({
user: "appUser",
pwd: "AppUserPassword", // 替换为强密码
roles: ["readWrite", "dbAdmin"] // readWrite:读写数据;dbAdmin:管理数据库索引、统计等
})
db.createUser({
user: "reportUser",
pwd: "ReportPassword",
roles: ["read"]
})
db.createUser({
user: "customUser",
pwd: "CustomPassword",
roles: [
{ role: "find", db: "mydatabase" },
{ role: "insert", db: "mydatabase" }
]
})
退出MongoDB shell:
exit
使用管理员账户登录并检查状态:
mongo -u admin -p YourStrongAdminPassword --authenticationDatabase admin
use admin
db.runCommand({ connectionStatus: 1 }) // 查看当前用户权限
以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数据库权限)
以reportUser为例,登录并测试操作:
mongo -u reportUser -p ReportPassword --authenticationDatabase mydatabase
use mydatabase
db.testCollection.find() // 应成功执行(read权限)
db.testCollection.insertOne({ name: "Report Data" }) // 应失败(无write权限)
编辑/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
参考MongoDB官方文档配置TLS,加密客户端与服务器之间的通信,防止数据泄露。