Laravel + MongoDB:无法进行身份验证

时间:2019-01-16 10:37:56

标签: mongodb nosql

我有一个mongodb,其中有一个在admin中定义的用户,如下所示

{
    "_id" : "admin.realtebo",
    "user" : "realtebo",
    "db" : "admin",
    "roles" : [
            {
                    "role" : "root",
                    "db" : "admin"
            },
            {
                    "role" : "readWriteAnyDatabase",
                    "db" : "admin"
            }
    ],
}

使用linux shell工具mongo中的凭据时,我可以在mongo安装中的每个数据库上成功执行所需的操作

我在我的.env中输入了以下(它们是正确的)数据

DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=dev_db
DB_USERNAME=realtebo
DB_PASSWORD=<mypasswor>

Laravel无法连接

MongoDB \ Driver \ Exception \ AuthenticationException (11)
Authentication failed.

我确定这不是Laravel或配置问题,因为同一个应用程序可以成功连接到远程mongodb。

很抱歉出现这样的菜鸟问题,但是..如何必须在mongo的管理数据库中设置用户,以便realtebo可以将WriteWrite写入dev_db?我是否必须将用户明确添加到dev_db中?

预先感谢,我确定这是愚蠢的。

1 个答案:

答案 0 :(得分:1)

如果是jenssegers的mongodb,则需要在config \ database.php中指定身份验证数据库:

'mongodb' => [
    'driver'   => 'mongodb',
    'host'     => env('DB_HOST', 'localhost'),
    'port'     => env('DB_PORT', 27017),
    'database' => env('DB_DATABASE'),
    'username' => env('DB_USERNAME'),
    'password' => env('DB_PASSWORD'),
    'options'  => [
        'database' => 'admin' // <=== here
    ]
],