MongoDB的用户管理
如果在配置文件中 eanble 了 authorization,那么用这样的配置启动 MongoDB 后。如果不是 root 用户去创建用户会遇到一些权限问题。
security:
authorization: enabled
/usr/local/opt/mongodb-community/bin/mongod –config /usr/local/etc/mongod.conf
如果你忘记的 root 用户或者其它管理员用户的密码,那么可以先以无权限控制的方式启动 MongoDB:
mongod --port 27017 --dbpath /usr/local/var/mongodb
再连接到 MongoDB:
mongo --port 27017
根据需要可以更改用户密码或者创建新用户:
db.changeUserPassword("root", passwordPrompt())
db.changeUserPassword("root", "password")
db.createUser({
"user": "dahui",
"pwd": "password",
"roles":
[
{
"role": "userAdminAnyDatabase",
"db": "admin"
},
"readWriteAnyDatabase"
]
});
添加完这种带有 userAdminAnyDatabase 角色的用户后,关闭 MongoDB server:
db.adminCommand( { shutdown: 1 } )
再以有权限控制的方式重新启动 MongoDB Server。(/usr/local/etc/mongod.conf 中设置了 authorization: enabled)
mongod --config /usr/local/etc/mongod.conf
或
mongod --auth --port 27017 --dbpath /var/lib/mongodb
这样使用拥有 userAdminAnyDatabase 角色的用户登录后,就可以通过使用 use DB_NAME 的方式给不同的 DB 添加用户了。
mongosh --port 27017 -u admin -p password --authenticationDatabase admin
mongosh "mongodb://admin:password@127.0.0.1:27017/center0?authSource=admin"
Reference:
[1]: https://www.mongodb.com/docs/v5.0/tutorial/enable-authentication/
[2]: https://www.mongodb.com/docs/manual/reference/method/js-user-management/