php7 mongodb身份验证失败

时间:2016-04-01 13:46:12

标签: php mongodb authentication php-7

我在ubuntu堆栈中安装了php7 + mongodb 3.2:

pecl install mongodb(这是> 5.99.99)的新驱动程序

我还使用最后一个php包mongodb/mongodb作为包装。

但我在验证用户方面遇到了问题。

new \MongoDB\Client('mongodb://root:123456@somehost:27017');

由于身份验证机制失败,驱动程序正在尝试进行身份验证MONGODB-CR(已弃用于> 3.0)而不是SCRAM-SHA-1

当然,身份验证适用于shell mongo客户端:

mongo someip:27017/admin -u root -p "123456"

问题是,如何在php驱动程序中指定身份验证机制? (\MongoDB\Client构造函数接受一些数组$driverOptions = []),是否有指定它的选项?

谢谢!

1 个答案:

答案 0 :(得分:2)

确保您使用的是最新的驱动程序。由于新默认值应为SCRAM-SHA-1

我在环境下运行了测试:php7,ubuntu14,MongoDB v3.2.xmongo-php-library =^1.0.0mongodb php driver v1.1.5。哪个按预期工作。

require_once __DIR__ . "/vendor/autoload.php";
$client = new MongoDB\Client("mongodb://user:pwd@host:port/admin");
$collection = $client->selectCollection("databaseName", "collection");
$cursor = $collection->find();

foreach ($cursor as $document) { var_dump($document); }

我还在URI中测试了authMechanism选项,例如:

$client = new MongoDB\Client("mongodb://user:pwd@host:port/admin?authMechanism=SCRAM-SHA-1");

哪个也有效,但如果您使用的是新的PHP驱动程序,则不需要指定SCRAM-SHA-1。如果你运行php --ri mongodb,你应该会看到类似的东西(对于v1.1.5):

mongodb
mongodb support => enabled
mongodb version => 1.1.5
mongodb stability => stable
libmongoc version => 1.3.3
libbson version => 1.3.3