我想为我的MongoDB实例设置用户名和密码验证,以便任何远程访问都会要求输入用户名和密码.我尝试了MongoDB网站上的教程并做了以下事情:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
Run Code Online (Sandbox Code Playgroud)
在那之后,我退出并再次运行mongo.而且我不需要密码来访问它.即使我远程连接到数据库,也不会提示我输入用户名和密码.
更新这是我最终使用的解决方案
1) At the mongo command line, set the administrator:
use admin;
db.addUser('admin','123456');
2) Shutdown the server and exit
db.shutdownServer();
exit
3) Restart mongod with --auth
$ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/
4) Run mongo again in 2 ways:
i) run mongo first then login:
$ ./mongodb/bin/mongo localhost:27017
use admin
db.auth('admin','123456');
ii) run & login to mongo in command line.
$ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456
Run Code Online (Sandbox Code Playgroud)
用户名和密码将以相同的方式用于mongodump和mongoexport.
我使用db.addUser(...)在过去的某个时刻创建用户.我现在如何更改该用户的密码?
我使用具有userAdmin角色的用户登录.我用什么命令来更改其他用户的密码?
编辑2
我需要回答v2.4样式的addUser和权限文档
编辑
有人建议我使用2.2 addUser语法来更改密码.这不起作用:
db.addUser({user: "test", pwd: "oldPassword", roles: ["readWrite"]})
db.addUser("test", "newPassword")
Run Code Online (Sandbox Code Playgroud)
给
uncaught exception: couldn't add user: system.users entry must not have both 'roles' and 'readOnly' fields
Run Code Online (Sandbox Code Playgroud)