0. はじめに
こんにちは、@kazuma_devです。
PHPフレームワークLaravel入門第2版(通称:青本)Chapter5で、SQLiteではなくMySQLで環境構築した際のエラー対処方法です。
レビューを見る限り、chapter5の環境構築でつまづく方が多かったので下記に記します。
0-1. 全体の流れ
0-2. 本記事の対象者
- Laravel入門第2版でMySQLを使いたい人
1. エラー内容
1-1. 前提・実現したいこと
- Laravel6系とMySQL(MariaDB)の接続
1-2. 発生している問題・エラーメッセージ
sqlstate[hy000] [1045] access denied for user 'root'@'localhost' (using password: no)
1-3. 該当のソースコード
- 公式サイトのサンプルファイルにあるテストコードは下記の通りです。書籍の通り進めていくとSQLiteを使用するため、下記のコードになるかと思います。
/Applications/MAMP/htdocs/laravelapp/config/database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
===中略===
],
/Applications/MAMP/htdocs/laravelapp/.env
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=C:\Users\tuyano\Desktop\laravelapp\database\database.sqlite
DB_USERNAME=homestead
DB_PASSWORD=secret
1-4. 試したこと
- ユーザーを作る際にホスト名を
%
ではなくlocalhost
で設定(phpMyAdminトップページ→ユーザアカウント→新規作成"ユーザアカウントを追加する") - MAMP側のDBポートも
8889
に変更
/Applications/MAMP/htdocs/laravelapp/config/database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', ''),
'port' => env('DB_PORT', '8889'),
'database' => env('DB_DATABASE', 'laravelapp'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'root'),
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
===中略===
],
/Applications/MAMP/htdocs/laravelapp/.env
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=8889
DB_DATABASE=laravelapp
DB_USERNAME=laravelapp
DB_PASSWORD=password123
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
$ php artisan cache:clear
$ php artisan config:cache
$ rm -f bootstrap/cache/config.php
$ php artisan migrate
補足
開発環境(FW/ツールのバージョンなど)
ツール | バージョン |
---|---|
PHP | 7.4.1 |
Laravel | 6.20.38 |
MySQL | 5.7.34 |
Nginx | 1.18.0 |
Composer | 2.1.9 |
MAMP | - |
MacBook Air | M1,2020 |
macOS | Monterey 12.0.1 |
Homebrew | 3.3.8 |
Reference