我想为我的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。
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
这对我来说很管用。
一些答案是在使用——auth命令行标志或设置配置文件属性之间发送混合信号。
security:
authorization: enabled
我愿澄清这方面的问题。首先,在这两种情况下,身份验证凭证(即用户/密码)都必须通过执行db来创建。默认admin数据库上的createUser查询。一旦获得凭据,有两种方式来启用身份验证:
没有自定义配置文件:这是适用于前一个身份验证标志。启动mongod: usr/bin/mongod——auth
使用自定义配置文件:这是指后一种配置必须出现在自定义配置文件中。启动mongod: usr/bin/mongod——config <配置文件路径>
通过认证连接到mongo shell:
mongodb -u <user> -p <password>——authenticationDatabase admin
——authenticationDatabase这里是创建用户的数据库名称。所有其他mongo命令,如mongorestore, mongodump接受额外的选项即-u <user> -p <password>——authenticationDatabase admin
详情请参阅https://docs.mongodb.com/manual/tutorial/enable-authentication/。
很多重复的答案,但我认为他们忽略了一个重要的注意:
即使正确启用了身份验证,您也可以在没有用户名/密码的情况下连接到Mongo数据库!
但是,您只能执行无害的命令,如db.help()、db.getMongo()、db.listCommands()等。
$ mongo
MongoDB shell version v4.4.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f662858b-8658-4e33-a735-120e3639c131") }
MongoDB server version: 4.4.3
mongos> db.getMongo()
connection to 127.0.0.1:27017
mongos> db
test
mongos> db.version()
4.4.3
mongos> db.runCommand({connectionStatus : 1})
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1,
"operationTime" : Timestamp(1618996970, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1618996970, 2),
"signature" : {
"hash" : BinData(0,"Kre9jvnJvsW+OVCl1QC+eKSBbbY="),
"keyId" : NumberLong("6944343118355365892")
}
}
}
按顺序执行以下步骤
该任务指导管理员通过CLI创建用户
use admin
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
启用身份验证,你怎么做取决于你的操作系统,如果你使用的是windows,你可以简单地mongod——auth,如果是linux,你可以编辑/etc/mongod.conf文件来增加安全性。授权:启用后重新启动服务
通过cli mongo连接-u "admin" -p "admin123"——authenticationDatabase "admin"就是这样
你可以查看这篇文章了解更多细节,并学习使用猫鼬连接它。