『Laravel』でmysqlと接続するために『php artisan migrate』を実行時に、
『SQLSTATE[HY000] [1045] Access denied』と表示されることがあります。
アクセス拒否、という意味で、
環境の違いにより原因は様々あるようで、
もし表示された場合に確認したい箇所についてまとめることにしました。
phpMyAdmin
ユーザーを作る際に%ではなくlocalhostで設定。
.envファイル
database, username, passwordが間違っていないことを確認
ポート番号があっているか確認
(3306または8889)
DB_HOST=127.0.0.1をlocalhostへ変更
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock を.envに追加
config/database.php
config/database.phpのunix_socketの部分をデフォルトのものではなく
‘unix_socket’ => ‘/Applications/MAMP/tmp/mysql/mysql.sock’,
に変更。
変更後にはキャッシュ削除
php artisan cache:clear
php artisan config:clear
その他 rootでアクセスできるか試す
ユーザーをrootにしてアクセスできるか試していただけますでしょうか。
laravelではなく mysql 単独でアクセスできるかも試していただけると助かります。
Access denied for user ‘root’@’localhost’ (using password: NO)でログインできない場合
Laravel データベース接続編
mysqlのバージョン次第でsudo 実行が必要かもです、こちらの記事も参考にしていただければと思います。
Laravelのマイグレーション時にAccess denied for user ‘root’@’localhost’になる
それでもダメなら再インストール
- XAMPP/MAMPの再インストール
- Laravelの再インストール
その他のケース
takashiさん:
自分の場合下記で解決できました。
PHPからMySQL 8.0へPDOで接続時に[could not find driver]になる場合の対処法
森野さん:
自分の場合ですが、下記の方法で解決できました。
mampを起動させた際、tmpフォルダの中にmysql.sock.lock.が自動で生成されていたようでして、これを削除したら無事にテーブルを作成出来ました。
この記事へのコメントはありません。