无法使用 PHP 在 mongodb 上进行身份验证
Can't authenticate on mongodb with PHP
我做了什么:
在 /etc/mongod.conf
中启用身份验证:
auth = true
如 doc 中所述,从 shell 创建第一个用户:
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
使用 admin
用户,我创建了一个 root
用户来访问 mongodb:
db.createUser(
{
user: "root",
pwd: "root",
roles: [ "root" ]
})
到目前为止一切正常,因为我可以从 mongo shell 进行身份验证:
mongo --port 27017 -u root -p root admin
它工作得很好,因为我可以在数据库中进行所有操作。
问题:
当我尝试使用相同的 root
用户从 PHP 进行身份验证时:
$client = new MongoClient("mongodb://root:root@localhost:27017/admin");
它给出了错误:
Failed to connect to: localhost:27017: Authentication failed on database 'admin' with username 'root': auth failed
为什么不能 PHP 在 mongodb 上进行身份验证,如果使用相同的凭据在 mongo shell 上可以正常进行身份验证?
其他说明:
- 如果我禁用身份验证 PHP 连接完美,mongo 类 工作正常
- 我试过创建不同的用户,但响应是一样的
- 我正在使用 Mongo 3.0.1、PHP 5.5.9 和 Ubuntu 14.04.2 LTS 64 位
问题已解决:显然是由 PHP mongo 驱动程序版本 1.4
中的 problem/bug 引起的
我已将驱动程序升级到 1.6
版本:
pecl upgrade mongo
现在身份验证有效。
我遇到了同样的问题,在我的例子中,我使用 apt-get
安装了 mongo
apt-get install php5-mongo
似乎 Ubuntu 存储库仍然是 1.4 版本并且还没有更新包。
如果你想在 Ubuntu 上安装 mongo,你应该使用 pecl 选项
pecl install mongo
切勿使用 apt-get
为 php 安装 mongo。
我做了什么:
在 /etc/mongod.conf
中启用身份验证:
auth = true
如 doc 中所述,从 shell 创建第一个用户:
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
使用 admin
用户,我创建了一个 root
用户来访问 mongodb:
db.createUser(
{
user: "root",
pwd: "root",
roles: [ "root" ]
})
到目前为止一切正常,因为我可以从 mongo shell 进行身份验证:
mongo --port 27017 -u root -p root admin
它工作得很好,因为我可以在数据库中进行所有操作。
问题:
当我尝试使用相同的 root
用户从 PHP 进行身份验证时:
$client = new MongoClient("mongodb://root:root@localhost:27017/admin");
它给出了错误:
Failed to connect to: localhost:27017: Authentication failed on database 'admin' with username 'root': auth failed
为什么不能 PHP 在 mongodb 上进行身份验证,如果使用相同的凭据在 mongo shell 上可以正常进行身份验证?
其他说明:
- 如果我禁用身份验证 PHP 连接完美,mongo 类 工作正常
- 我试过创建不同的用户,但响应是一样的
- 我正在使用 Mongo 3.0.1、PHP 5.5.9 和 Ubuntu 14.04.2 LTS 64 位
问题已解决:显然是由 PHP mongo 驱动程序版本 1.4
我已将驱动程序升级到 1.6
版本:
pecl upgrade mongo
现在身份验证有效。
我遇到了同样的问题,在我的例子中,我使用 apt-get
安装了 mongoapt-get install php5-mongo
似乎 Ubuntu 存储库仍然是 1.4 版本并且还没有更新包。 如果你想在 Ubuntu 上安装 mongo,你应该使用 pecl 选项
pecl install mongo
切勿使用 apt-get
为 php 安装 mongo。