在使用Laravel连接mLab时遇到了问题(jenssegers/laravel-mongodb)

在尝试使用jenssegers/laravel-mongodb的ReadMe.md的指南连接Laravel和mLab上的MongoDB时,遇到了身份验证异常,并无法成功连接。

我扭着头试了一下PHP的MongoDB驱动程序,竟然成功连接上了。为什么呢?
另外顺带一提,我能正常地连接到本地建立的MongoDB。为什么呢?

在Readme.md文件中设置的陷阱

'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' // sets the authentication database required by mongo 3
    ]
],

说实话,虽然这个事实淡淡地写在这里,但是实际上必须指定通过认证的数据库才行。
当在本地构建时,管理员有访问权限,但在mLab上就不行了。
嗯,一旦明白了,那当然是这样啦。

结论是什么。

所以应该按以下方式进行修正。

'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' => env('DB_DATABASE')
    ]
],

主要使用的数据库应该也具有对应的访问权限吧。

请参考。

jenssegers/laravel-mongodb:一个基于MongoDB的Laravel(Moloquent)模型和查询构建器。为什么项目连接Mongo时认证失败,但客户端连接成功…·问题#1028·jenssegers/laravel-mongodb

广告
将在 10 秒后关闭
bannerAds