LoginSignup
0
3

More than 5 years have passed since last update.

LaravelでmLabにつなごうとしてハマった話(jenssegers/laravel-mongodb)

Last updated at Posted at 2017-05-09

jenssegers/laravel-mongodbのReadMe.mdを見ながらLaravelとmLab上のMongoDBに繋ごうとしたところ、
Authentication Exceptionが起きてしまい接続できませんでした。

首をひねりつつ、PHPのMongoDBドライバから繋いでみたところ、接続できちゃう。Why?
あとついでに、ローカルで建てたMongoDBには普通に接続できる。なんでやねん。

Readme.mdに仕掛けられた落とし穴

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

実はこれ、しれっと書いてありますけど、実は認証が通るDBが指定されてないといけないようです。
ローカルで建てた時はadminにアクセス権があるけど、mLabではないと。
なるほどわかってしまえばそりゃそーだ。

結論

したがって以下のように修正するといいみたい。

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

主に利用するDBならアクセス権もあるでしょってことで。

参考

jenssegers/laravel-mongodb: A MongoDB based Eloquent model and Query builder for Laravel (Moloquent)
why project connected the mongo Authentication failed?but client connected succ... · Issue #1028 · jenssegers/laravel-mongodb

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3