【发布时间】: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