推荐答案
-- -------------------- ---- ------- - -- ------- -- ------ ------ - --- ------- ----- - --- ----- --- --- ----- - ------- --------------- ----- ------------ ---- ---------------- ------ -- ----- ----------------------- --- ------- -- -- - ------------ ---- ----- -- --------- -- ------------- ------------------------ ----- - -------- --- ---------- - ------ --------------- ----- --------- ---- ------------- ------ -- ----- ------------ --- ------------ -- --
本题详细解读
1. 启用认证
MongoDB 默认不启用认证。要启用认证,需要在启动 MongoDB 实例时使用 --auth
参数。例如:
mongod --auth
2. 创建管理员用户
在启用认证后,首先需要创建一个具有管理权限的用户。通常,这个用户会被创建在 admin
数据库中,并且拥有 userAdminAnyDatabase
角色,以便能够管理其他数据库的用户。
use admin db.createUser({ user: "adminUser", pwd: "adminPassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
3. 重新连接并使用认证
创建管理员用户后,需要退出并重新连接 MongoDB,使用新创建的用户进行认证。
mongo -u adminUser -p adminPassword --authenticationDatabase admin
4. 创建普通用户
在认证模式下,可以为特定数据库创建普通用户,并赋予相应的权限。例如,创建一个具有读写权限的用户:
use myDatabase db.createUser({ user: "myUser", pwd: "myPassword", roles: [{ role: "readWrite", db: "myDatabase" }] })
5. 角色说明
userAdminAnyDatabase
: 允许用户管理所有数据库的用户。readWrite
: 允许用户对指定数据库进行读写操作。
6. 认证数据库
在连接时,--authenticationDatabase
参数指定了用于认证的数据库。通常,管理员用户会在 admin
数据库中创建,因此认证数据库通常为 admin
。
7. 注意事项
- 确保在启用认证前已经创建了管理员用户,否则将无法管理数据库。
- 在生产环境中,建议使用更复杂的密码,并定期更换密码以提高安全性。