当前位置: 首页 > 知识库问答 >
问题:

使用Mongodb php驱动程序和新的php库,Mongodb“身份验证失败”

彭成天
2023-03-14

使用新的mongoDB驱动程序:https://github.com/mongodb/mongo-php-driver和新的php库:https://github.com/mongodb/mongo-php-library我得到了“授权失败”,试图执行一个简单的查找()查询。

在下面的代码中,连接字符串遵循模式mongoDB://user:password@mongoinstance: port/数据库。连接字符串使用旧的遗留mongo驱动程序与fint()一起工作,而不是新的mongob驱动程序。新的mongob被正确地安装在php中,并显示在phpinfo中,我们需要做的唯一突破性的改变是使用"new MongoDB\Client"而不是new MongoClient作为遗留的mongo驱动程序。

但是,当我尝试运行以下find()时,我在vendor/mongodb/mongodb/src/Operation/find中获得auth fails异常。php第179行

使用传统的mongo驱动程序没有问题。关于auth的任何想法都失败了吗?mongodb驱动程序到底是什么故障?正在中传递数据库和集合的正确凭据mongodb://string.使用新驱动程序和库在旧版中工作失败。

环境:

  • Windows 10
  • Wamp
  • PHP 5.5.12
  • MongoDB驱动1.1.4
  • 最新版本的新PHP库(安装作曲家:作曲家需要"mongodb/mongodb=^1.0.0")
  • Mongo实例版本2.4.6

共有2个答案

壤驷坚
2023-03-14

我只是遇到了同样的错误,发现我必须将数据库名称放在连接字符串中。这里的留档说:

如果未指定 /database且连接字符串包含凭据,则驱动程序将向管理员数据库进行身份验证。

我使用的用户没有管理数据库的权限,所以这就是我收到身份验证错误的原因。我建议你也检查一下这个。不能通过连接选项以与MongoClient相同的方式提供数据库名称。

裴展
2023-03-14

这就是解决办法。在我的头撞在墙上3天后,结果是新的mongob驱动程序对mongoburi的解析不同于传统的mongo驱动程序。我的密码有一个%登录。当我将%符号更改为其他符号时,一切都按预期进行。

 类似资料:
  • 问题内容: 我目前正在尝试使用(相对)新的3.0 Java驱动程序连接到MongoDB副本集。但是,我似乎无法捕捉到用户提供错误凭据时发生的MongoSecurityExceptions。这是我当前的代码。 当使用正确的凭据运行时,此代码可以正常工作,但是如果提供了错误的凭据,则会在try-catch之外引发异常。 任何想法在哪里处理身份验证异常? 问题答案: MongoClient构造函数不会引

  • 我试图使用java driver V2.12在MongoDB2.6中创建一个身份验证数据库。特别是,我需要创建一个用户访问管理集合。有什么建议吗?谢了。

  • 我无法连接到mongo v2。6使用x509证书从Java/Groovy进行身份验证。我已经用ssl构建了mongo,感觉它配置正确。 我们的项目有两个连接Mongo的应用程序——一个是用NodeJS编写的,另一个是用Java/Groovy编写的。NodeJS项目能够使用X509证书和查询成功地进行身份验证。此外,我还可以通过指定ssl并在命令行上提供PEM文件来支持mongo。但是,我无法使用J

  • 我已经使用以下命令启动了,并创建了一个用户来执行此操作(正在工作,因为如果我手动执行工作),直到我添加了这个,它才开始工作,所以也许这就是我需要的。 我错过了什么?

  • 问题内容: 我看到了很多教程,展示了如何使用Java在mongodb中进行身份验证 我将mongodb配置为启用身份验证。在控制台中,我使用 使用管理员 db.auth(“ myUser”,“ newPassword”)并运行良好。 在Java中,在每个访问过的网站中,代码都是 大问题是代码对我不起作用,我也不知道为什么。我测试了显式更改为管理数据库。 这对我来说有效,但这不是解决方案,因为我试图

  • 我在决定如何为一个RESTful API实现身份验证时遇到了一些麻烦,该API既可供web应用程序使用,也可供移动应用程序使用。 首先,我想研究HTTPS上的HTTP基本身份验证作为一种选择。对于移动应用程序来说,用户名和密码可以安全地存储在操作系统钥匙链中,并且在传输过程中无法被拦截,因为请求是通过HTTPS发出的。对于API来说,它也很优雅,因为它将是完全无状态的。问题在于web应用程序。将无