我想为我的MongoDB实例设置用户名和密码身份验证,以便任何远程访问都将要求提供用户名和密码。我尝试了MongoDB站点的教程,并做了以下工作:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
在那之后,我退出了,再次跑了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
用户名和密码将以同样的方式工作在mongodb和mongoexport。
我已经在6.0版中做到了这一点
如何设置数据库的用户名和密码;
安装MongoDB 6.0或更高版本
使用compass在MongoDB中创建数据库(不管名字是什么)
安装MongoDB Shell
https://www.mongodb.com/try/download/shell
打开cmd
cd C:\Program Files\mongosh
mongosh“mongodb: / / localhost: 27017”
使用#您的数据库名称#
db。createUser({user: "xxx", pwd: "xxx", roles: [{role: "readWrite", db: "xxx"}]})
Mongodb 4.4.13社区
1. 创建数据库用户
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
1.2验证工作
> db.auth('myUserAdmin','abc123')
< { ok: 1 }
如果失败了
> db.auth('myUserAdmin','amongus')
MongoServerError: Authentication failed.
2. 修改/etc/mongod.conf
nano /etc/mongod.conf
变化:
#security:
to:
security:
authorization: enabled
3.重启mongod service
sudo service mongod restart
这对我来说很管用。
我已经在6.0版中做到了这一点
如何设置数据库的用户名和密码;
安装MongoDB 6.0或更高版本
使用compass在MongoDB中创建数据库(不管名字是什么)
安装MongoDB Shell
https://www.mongodb.com/try/download/shell
打开cmd
cd C:\Program Files\mongosh
mongosh“mongodb: / / localhost: 27017”
使用#您的数据库名称#
db。createUser({user: "xxx", pwd: "xxx", roles: [{role: "readWrite", db: "xxx"}]})