【问题标题】:php7 mongodb authentication failsphp7 mongodb 认证失败
【发布时间】:2016-07-21 08:35:31
【问题描述】:

我在 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 = []),是否有任何选项可以指定它?

谢谢!

【问题讨论】:

    标签: php mongodb authentication php-7


    【解决方案1】:

    确保您使用的是最新的驱动程序。因为新的默认值应该是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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 2018-05-23
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 2021-03-07
      • 2019-09-03
      • 2016-05-30
      相关资源
      最近更新 更多