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/