我有一台具有Ubuntu 16.04.5的VMWare VM,并且刚刚安装了MongoDb 3.6(不是最新版本,但与生产环境匹配)
在远程Shell中,我可以运行mongo
,因此我的mongod
服务可以正常工作。
这是/etc/mongod.conf
文件中有关身份验证的部分
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1, 192.168.1.50
security:
suthorization: enabled
我在数据库admin
中创建了该用户
> use admin
switched to db admin
> show users
{
"_id" : "admin.realtebo",
"user" : "realtebo",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
然后,我重新启动了mongod
服务。
我无法再使用mongo
shell客户端访问它拒绝了我的连接
mongo -u realtebo -p passsword_i_setup_for_user_realtebo
MongoDB shell version v3.6.9
connecting to: mongodb://127.0.0.1:27017
2019-01-16T09:06:51.416+0100 W NETWORK [thread1]
Failed to connect to 127.0.0.1:27017,
in(checking socket for error after poll), reason: Connection refused
2019-01-16T09:06:51.416+0100 E QUERY [thread1]
Error: couldn't connect to server 127.0.0.1:27017,
connection attempt failed :
connect@src/mongo/shell/mongo.js:257:13
@(connect):1:6
exception: connect failed
好的,删除authorization: true
并重新启动,我可以再次访问,因此运行正常,但我想学习正确的方法:最少使用用户名和密码
我验证了这个确切的用户名/密码组合正在开发一个小型的nodejs应用程序,该应用程序可以使用这些凭据运行,并且如果不使用它们就会失败,因此密码是正确的
我尝试删除身份验证,并验证Windows主机上的“ Studio 3T”(mongodb客户端)能否成功访问来宾上的MongoDb,因此虚拟机没有端口/防火墙/其他问题
无法指定身份验证数据库admin
,如您在此处上面的几行所示。
mongo -u realtebo -p passsword_i_setup_for_user_realtebo --authenticationDatabase admin
在mongodb中使用用户名和密码创建诸如超级用户之类的东西的正确方法是什么?然后我必须在Win Client和Linux Shell Client中使用哪种“方法”来访问它?
我知道我必须为一个特定的特定数据库创建另一个用户,我想是一个readWrite,但这不是实际的问题。现在,我需要能够以超级用户身份登录才能对其进行管理
答案 0 :(得分:1)
那是一个非常简单的愚蠢错误。
我修复了以下拼写错误,请注意s
中的a
而非suthorization
security:
suthorization: enabled
重新启动服务
在Linux shell中,我可以成功使用
进行连接mongo -u realtebo -p passsword_i_setup_for_user_realtebo --authenticationDatabase admin
在Windows客户端上,我在legacy
上设置身份验证方法,并输入了用户名和密码
现在所有作品
答案 1 :(得分:1)
这不是身份验证问题,实际上由于/etc/mongod.conf
文件中的错误,服务器根本无法启动(“连接被拒绝”),应该是:
security:
authorization: enabled
在启动客户端时,还必须添加选项--authenticationDatabase admin
。