在Debian系统上,首先需要安装MongoDB官方版本。执行以下命令完成安装:
sudo apt update
sudo apt install -y mongodb-org
安装完成后,启动MongoDB服务并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
MongoDB默认未启用身份验证,需通过配置文件开启。编辑配置文件:
sudo nano /etc/mongod.conf
找到security section,添加或修改以下内容:
security:
authorization: enabled
保存文件后,重启MongoDB服务使配置生效:
sudo systemctl restart mongod
管理员账户用于管理所有数据库用户及权限,需在admin数据库中创建。连接MongoDB shell:
mongo
切换至admin数据库:
use admin
创建管理员用户(以root角色为例,拥有最高权限):
db.createUser({
user: "adminUser",
pwd: "StrongAdminPassword123!",
roles: [{ role: "root", db: "admin" }]
})
提示:
root角色为内置最高权限角色,包含userAdminAnyDatabase、readWriteAnyDatabase等多个权限。生产环境中建议使用此角色或根据需求组合其他角色。
根据业务需求,为特定数据库创建用户并分配权限。以下为常见场景示例:
假设需为mydb数据库创建myuser用户,赋予读写权限:
mongo -u adminUser -p StrongAdminPassword123 --authenticationDatabase admin
切换至目标数据库:
use mydb
创建用户:
db.createUser({
user: "myuser",
pwd: "UserPassword456!",
roles: [{ role: "readWrite", db: "mydb" }]
})
若需为用户分配只读权限,可将角色改为read:
db.createUser({
user: "readonlyUser",
pwd: "ReadOnlyPassword789!",
roles: [{ role: "read", db: "mydb" }]
})
如需更细粒度的权限(如仅允许插入数据),可使用内置角色的组合或自定义角色。例如,赋予insert权限:
db.createUser({
user: "insertOnlyUser",
pwd: "InsertOnlyPass123!",
roles: [{ role: "insert", db: "mydb" }]
})
创建用户后,需验证其权限是否符合预期。
使用管理员账户登录并尝试创建用户:
mongo -u adminUser -p StrongAdminPassword123 --authenticationDatabase admin
切换至admin数据库,创建测试用户:
use admin
db.createUser({ user: "testUser", pwd: "TestPass123", roles: [{ role: "read", db: "admin" }] })
若创建成功,说明管理员权限有效。
使用普通用户登录并尝试操作:
mongo -u myuser -p UserPassword456 --authenticationDatabase mydb
切换至mydb数据库,尝试插入数据:
use mydb
db.myCollection.insertOne({ name: "Test Data" })
若插入成功,说明readWrite权限配置正确。若尝试执行db.dropDatabase()等管理操作,应返回权限不足错误。
若需调整用户权限,可使用grantRolesToUser添加角色或revokeRolesFromUser移除角色。例如,为用户添加dbAdmin角色:
mongo -u adminUser -p StrongAdminPassword123 --authenticationDatabase admin
切换至目标数据库:
use mydb
添加角色:
db.grantRolesToUser("myuser", [{ role: "dbAdmin", db: "mydb" }])
若需删除用户,可使用dropUser命令:
use mydb
db.dropUser("myuser")
auditLog)。通过以上步骤,可在Debian系统上完成MongoDB的权限管理配置,保障数据库的安全性与数据的完整性。