首页 > 解决方案 > 如何配置 MongoDB 以使用用户名和密码进行连接?

问题描述

我有一个带有 Ubuntu 16.04.5 的 VMWare VM,并且刚刚安装了 MongoDb 3.6(不是最新的,但它与生产环境匹配)

在远程外壳中,我可以运行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服务。

问题

我不能再使用mongoshell 客户端访问,它拒绝我的连接

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

重要笔记

其他尝试

指定身份验证数据库失败,admin您可以在此处看到上面的一些行。

mongo -u realtebo -p passsword_i_setup_for_user_realtebo --authenticationDatabase admin

简单的问题,我希望

在 mongodb 中创建具有用户和密码的超级用户之类的正确方法是什么?然后我必须从 win 客户端和 linux shell 客户端使用哪种“方法”来访问它?

我知道我必须为单个特定数据库创建另一个用户,我想是 readWrite,但这不是实际问题。现在我需要能够以超级用户身份登录来管理它

标签: mongodb

解决方案


这是一个如此简单的愚蠢错误。

  1. 我修正了以下错字,注意s代替ainsuthorization

    security:
      suthorization: enabled
    
  2. 重启服务

  3. 从 linux shell 我可以成功连接使用

    mongo -u realtebo -p passsword_i_setup_for_user_realtebo --authenticationDatabase admin
    
  4. 从 Windows 客户端我设置身份验证方法legacy并输入用户名和密码

现在一切正常


推荐阅读