php artisan migrateでコケた
$ php artisan migrate
Illuminate\Database\QueryException : SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations and table_type = 'BASE TABLE')
とのこと。
(using password: YES)
でコケてる記事はいくつか出てくるけど、(using password: NO)
はあまりヒットしなかったのであとの人のために書きます。
先に結論
mysql> SET PASSWORD = 'secret'
して、.envをDB_PASSWORD=secret
に変更したのち
php artisan cache:clear
してphp artisan migrate
で解決。
まずは確認
vagrant ssh
した状態でmysql
コマンドを打ったらログインできるのが前提。
これができない場合はまずは手動でmysqlログインできる状態まで頑張って持っていきましょう。
mysqlに入れたら
select USER();
でなんというユーザ名で入れているのかを確認。(おそらく``homestead@localhost'`とか出てくるはず。その場合ユーザ名はhomestead)
次に接続するDBの確認。mysql内でshow databases;
してhomesteadがあることを確認しましょう。
mysql> show databases;
+---------------------+
| Database |
+---------------------+
| information_schema |
| homestead |
| #mysql50#lost+found |
| mysql |
| performance_schema |
| sys |
+---------------------+
6 rows in set (0.00 sec)
ここまで確認できたら開発中のLaravelプロジェクト内の.env
ファイルに
DB_DATABASE=homestead
DB_USERNAME=homestead
と定義されているかを確認しましょう。
パスワードを使用するように変更
なんだかパスワードが設定されてないのが原因らしいので、.envファイルで
DB_PASSWORD=
となっているところを
DB_PASSWORD=secret
などにして、(必ずしもsecretである必要はないけども)
mysql内で
mysql> SET PASSWORD = 'secret'
すれば行けるハズ。