AuthenticationFailed:分片MongoDB上的用户文档中缺少MONGODB-CR凭据:无法连接到:queryrouter0.example.com:27017:

时间:2017-09-05 14:11:22

标签: php mongodb laravel authentication

我有一个分片的MongoDB设置。

我正在尝试从我的Laravel应用程序连接到它

在我对数据库进行分片之前,我使用laravel-mongodb连接到我的常规mongodb实例。

这是我之前的配置

'mongodb' => array(
        'driver'   => 'mongodb',
        'host'     => env('MONGODB_HOST', 'localhost'),
        'port'     => env('MONGODB_PORT', 27017),
        'username' => env('MONGODB_USERNAME', ''),
        'password' => env('MONGODB_PASSWORD', ''),
        'database' => env('MONGODB_DATABASE', ''),
        'options' => array(
            'db' => env('MONGODB_AUTHDATABASE', '') //Sets the auth DB
        )
    )

我尝试将MONGODB_HOST更新为分片查询路由器主机名,但我现在收到错误

  

[MongoConnectionException]     无法连接到:queryrouter0.example.com:27017:使用用户名'maxrosecollins'对数据库'admin'进行身份验证失败:auth failed`

我可以在queryrouter0.example.com服务器

的日志中看到
  

2017-09-05T14:42:36.558 + 0000 I NETWORK [thread2]连接从45.32.144.169:33086#41615接受(1个连接现已打开)   2017-09-05T14:42:36.560 + 0000 I ACCESS [conn41615]验证db:admin {authenticate:1,user:“maxrosecollins”,nonce:“xxx”,key:“xxx”}

     

2017-09-05T14:42:36.562 + 0000 I ACCESS [conn41615]无法通过机制MONGODB-CR验证maxrosecollins @ admin:AuthenticationFailed:用户文档中缺少MONGODB-CR凭证

     

2017-09-05T14:42:36.563 + 0000 I - [conn41615] end connection 45.32.144.169:33086(1个连接现已开启)

我可以使用以下方法连接到查询路由器。 这是在同一台服务器上我使用laravel时获得auth失败错误。我有双重检查密码和用户名

mongo queryrouter0.example.com:27017 -u "maxrosecollins" -p "password" --authenticationDatabase "admin"

2 个答案:

答案 0 :(得分:0)

'connections' => [
     'mongodb' => [
      'driver'   => 'mongodb',
      'dsn' => 'mongodb://User:password@xxx-shard-00-00-uggj0.mongodb.net:27017,xxx-shard-00-01-uggj0.mongodb.net:27017,xxx-shard-00-02-uggj0.mongodb.net:27017/homestead?ssl=true&replicaSet=xxx-shard-0&authSource=admin',
      'database' => 'homestead',

  ],

我可以像这样连接到我的云图集

答案 1 :(得分:0)

我制定了laravel-mongodb安装版本2,它不支持SCRAM-SHA-1身份验证机制。

我使用composer update升级到版本3,这也意味着升级php mongo适配器以及许多其他依赖项。

然后我运行了db.adminCommand({authSchemaUpgrade: 1}); see upgrading auth

在此之后,我可以使用我的mongo查询路由器进行身份验证