在使用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