在Linux中,为MongoDB设置权限需要遵循以下步骤:
创建一个专用的MongoDB用户和组:
sudo groupadd mongodb
sudo useradd -r -g mongodb mongodb
更改MongoDB数据目录的所有权:
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
修改MongoDB配置文件(通常位于/etc/mongod.conf),以启用访问控制并设置身份验证模式。找到security部分并进行如下修改:
security:
authorization: enabled
如果你希望使用更强的身份验证方式,可以考虑使用x.509证书或LDAP进行身份验证。
重启MongoDB服务以应用更改:
sudo systemctl restart mongod
使用mongo shell连接到MongoDB实例,并创建一个管理员用户:
mongo
在mongo shell中,切换到admin数据库并创建一个管理员用户:
use admin
db.createUser({
user: "admin",
pwd: "your_password",
roles: ["userAdminAnyDatabase", "readWriteAnyDatabase"]
})
现在退出mongo shell:
exit
使用新创建的管理员用户重新连接到MongoDB实例,并为其他数据库创建用户和设置权限。例如,为名为mydb的数据库创建一个具有读写权限的用户:
mongo -u admin -p your_password --authenticationDatabase admin
在mongo shell中,切换到目标数据库并创建一个新用户:
use mydb
db.createUser({
user: "mydb_user",
pwd: "mydb_password",
roles: ["readWrite", "dbOwner"]
})
现在退出mongo shell:
exit
最后,确保MongoDB配置文件中的bindIp设置允许来自所需IP地址的连接。例如,如果你希望允许来自本地计算机的连接,可以将其设置为127.0.0.1。如果需要允许来自其他IP地址的连接,请将它们添加到列表中,用逗号分隔。
重启MongoDB服务以应用更改:
sudo systemctl restart mongod
现在,MongoDB已配置了权限,并且只有具有适当凭据的用户才能访问数据库。