【问题标题】:MongoDB connection auth works on shell but not with external ToolsMongoDB 连接身份验证适用于 shell,但不适用于外部工具
【发布时间】:2015-04-20 20:10:04
【问题描述】:

我有一个问题,我无法从外部工具连接到 MongoDB,而外部工具不是通过 MongoShell 或我的使用 Spring Data MongoDB 抽象的 web 应用程序。

我已成功在 MongoDB 上为“mydb”数据库创建了一个用户 我可以使用命令连接到本地主机上的 MongoDb

$ mongo mydb -u alex -p 12345678 --host localhost --port 27017

MongoDB shell version: 3.0.1
connecting to: localhost:27017/mydb
> show users
{
    "_id" : "mydb.alex",
    "user" : "alex",
    "db" : "mydb",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "mydb"
        }
    ]
}

现在我可以插入集合和查询,一切看起来都很顺利。 我也可以从我的网络应用程序中连接 Spring Data MongoDB 抽象。

当我现在尝试使用正确的 主机、端口、数据库、用户名和密码使用 Robomongo 应用程序或 Intellij Plugin for MongoDB 进行连接时我收到授权错误

来自 Intellij

Error when collecting Mongo databases: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18}

来自 Robomongo

2015-04-02 16:00:30: Connecting to localhost:27017...
2015-04-02 16:00:30: connect failed
2015-04-02 16:00:30: Unable to authorize

我想使用一些 GUI 客户端来获得更好的可视化和 CRUD 操作支持,但目前我无法连接到 MongoDB

你知道这是什么原因吗?

【问题讨论】:

  • 您使用的是哪个版本的 MongoDB? 3.0? 3.0 提高了安全性,但需要更新的驱动程序版本。许多工具尚未更新以支持 3.0。例如,我特别知道 Robomongo 没有。
  • 感谢您的评论。是的,我使用的是 MongoDB 3.0。事实上,当我看到身份验证机制更改为 SCRAM-SHA-1 时,我认为这与 3.0 版本有关。我想我在某处看到了如何将 mongoDB 设置为在旧的身份验证机制上进行配置。也许这会使这些工具再次发挥作用。我试试看
  • 使用 GUI 客户端,一切都很好,但用户创建却不行。目前几乎 GUI 客户端没有字段credentials,其中包含 MongoDB 身份验证所需的 MONGODB-CR 或 SCRAM-SHA-1 加密的用户密码。所以你应该用 MongoDB 命令来创建用户,更多信息请关注Create Administrative User with Roles

标签: mongodb intellij-idea authorization spring-data-mongodb robo3t


【解决方案1】:

我遇到了同样的问题,我在 mongoDb 日志中看到:

使用 MONGODB-CR 机制验证 xxx@yyyy 失败:用户文档中缺少 AuthenticationFailed MONGODB-CR 凭据

我相信这篇文章MongoDB-CR Authentication failed 解释了如何取消旧的身份验证。您将需要删除现有用户并再次添加新用户。

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 2014-08-16
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多