XAMP+CakePHPのapp.phpのDB接続エラー

PHP
スポンサーリンク

XAMPPでCakePHP(4.x)を動かそうとして、DB接続でちょっとハマったのでメモです。

前提条件

  • XAMPPをインストール済み
  • CakePHPでプロジェクトを作成済み(XAMPPのhtdocsディレクトリ配下)

DB接続設定でエラー

CakePHPでは、DB接続設定はプロジェクトフォルダ配下の「config」ディレクトリに存在する「app.php」に設定します。そのため、DBの接続設定を「app.php」に追加しました。

ところが、以下の画像のようなエラーメッセージ「[1045]Access denied for user ’my_app’@’localhost’(using password:YES)」が表示されました。

はて?’my_app’なんてユーザ作ってないし、設定してないな?my_appユーザを作ってみたけど、NG、app.phpには設定を追加したけど、なぜ?と思い、再度設定ファイルを確認。すると、「app.php」のDB設定の箇所に以下のような記載がありました。
'Datasources' => [
    /**
     * These configurations should contain permanent settings used
     * by all environments.
     *
     * The values in app_local.php will override any values set here
     * and should be used for local and per-environment configurations.
     *
     * Environment variable based configurations can be loaded here or
     * in app_local.php depending on the applications needs.
     */

これをみると「app_local.php」は、設定を上書きするよ~みたいなことが書いてありますね。
しっかり読まなかったのがいけないのですが、初心者にありがちなミスをしてしまいました。
ということで、「app_local.php」のDatasourcesの値を書き換え、上書き保存。

'Datasources' => [
    'default' => [
        'host' => 'localhost',
        /*
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'non_standard_port_number',

        'username' => 'my_app',     // DB接続ユーザ
        'password' => 'secret',     // DB接続ユーザのパスワード
        'database' => 'sampledb',  // 作成済みのDB名
        /**
         * If not using the default 'public' schema with the PostgreSQL driver
         * set it here.
         */
        //'schema' => 'myapp',

        /**
         * You can use a DSN string to set the entire configuration
         */
        'url' => env('DATABASE_URL', null),
    ],

これで無事にDBに接続することができました。

コメント