如何配置MongoDB以使用用户名和密码进行连接?

时间:2019-01-16 08:17:37

标签: mongodb

我有一台具有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,但这不是实际的问题。现在,我需要能够以超级用户身份登录才能对其进行管理

2 个答案:

答案 0 :(得分:1)

那是一个非常简单的愚蠢错误。

  1. 我修复了以下拼写错误,请注意s中的a而非suthorization

    security:
      suthorization: enabled
    
  2. 重新启动服务

  3. 在Linux shell中,我可以成功使用

    进行连接
    mongo -u realtebo -p passsword_i_setup_for_user_realtebo --authenticationDatabase admin
    
  4. 在Windows客户端上,我在legacy上设置身份验证方法,并输入了用户名和密码

现在所有作品

答案 1 :(得分:1)

这不是身份验证问题,实际上由于/etc/mongod.conf文件中的错误,服务器根本无法启动(“连接被拒绝”),应该是:

security:
  authorization: enabled

在启动客户端时,还必须添加选项--authenticationDatabase admin