无法使用PHP在mongodb上进行身份验证

Mop*_*ppo 9 php authentication ubuntu mongodb ubuntu-14.04

我做了什么:

启用身份验证/etc/mongod.conf:

auth = true
Run Code Online (Sandbox Code Playgroud)

文档中所述,从shell创建了第一个用户:

db.createUser(
{
    user: "admin",
    pwd: "admin",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
Run Code Online (Sandbox Code Playgroud)

使用该admin用户,我创建了一个root用户来访问mongodb:

db.createUser(
{
    user: "root",
    pwd: "root",
    roles: [ "root" ]
})
Run Code Online (Sandbox Code Playgroud)

在此之前一切正常,因为我可以通过以下方式从mongo shell进行身份验证:

mongo --port 27017 -u root -p root  admin
Run Code Online (Sandbox Code Playgroud)

它完美地工作,因为我可以在数据库中进行所有操作.

问题:

当我尝试使用相同的root用户从PHP进行身份验证时:

$client = new MongoClient("mongodb://root:root@localhost:27017/admin");
Run Code Online (Sandbox Code Playgroud)

它给出了错误:

无法连接到:localhost:27017:使用用户名"root"的数据库"admin"上的身份验证失败:auth失败

为什么PHP不能在mongodb上进行身份验证,如果使用相同的凭据进行身份验证可以从mongo shell中正常工作?

其他说明:

  • 如果我禁用身份验证PHP完美连接,mongo类工作正常
  • 我试图创建不同的用户,但响应是一样的
  • 我使用的是Mongo 3.0.1,PHP 5.5.9和Ubuntu 14.04.2 LTS 64bit

Mop*_*ppo 21

问题解决了:很明显它是由PHP mongo驱动程序版本中的问题/错误引起的 1.4

我已将驱动程序升级到版本1.6:

pecl upgrade mongo
Run Code Online (Sandbox Code Playgroud)

现在认证工作.