我想为我的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的最佳实践如下:
初始安装完成后,
使用管理
然后执行以下脚本创建admin用户
db.createUser(
{
user: "YourUserName",
pwd: "YourPassword",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" }
]
})
下面的脚本将为DB创建admin用户。
登录到db。管理使用
mongo -u YourUserName -p YourPassword admin
登录后,重复1 ~ 3可创建N个具有相同或不同管理凭证的数据库。
这允许您为在MongoDB中创建的不同集合创建不同的用户和密码
很多重复的答案,但我认为他们忽略了一个重要的注意:
即使正确启用了身份验证,您也可以在没有用户名/密码的情况下连接到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")
}
}
}
这个答案是针对Mongo 3.2.1的
参考
终端1:
$ mongod --auth
终端2:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
如果你想添加没有角色(可选):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
检查是否认证:
db.auth("admin_name", "1234")
它应该给你:
1
其他:
Error: Authentication failed.
0