Laradock で php artisan migrate するとエラーが表示される
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 3,987

退会済みユーザー
はじめて Laradock を利用して開発環境の構築をしています。
localhost
にアクセスすると Laravel の文字が表示されました。
次に php artisan migrate
としてマイグレーションを実行すると下記のエラーが表示されました。
In Connection.php line 664:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations)
In Connector.php line 67:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
In Connector.php line 67:
PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]
ググると MySQL 8 系で認証形式の変更があったことが原因なのかと思います。
(解決策として適切かわかりませんが)ここ の rockerbom さんの方法で解決できるのかと試しました。
下記は引用です。
1. add default authentication plugin to laradock/mysql/my.cnf
[mysqld] default_authentication_plugin= mysql_native_password
2. update content file mysql/docker-entrypoint-initdb.d/createdb.sql like:
CREATE USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpass'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION; CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpass'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; # CREATE DATABASE IF NOT EXISTS `yourdb` COLLATE 'utf8_general_ci' ; GRANT ALL ON `yourdb`.* TO 'admin'@'%' ; FLUSH PRIVILEGES ;
important note: remove old user, database and recreate again by above script.
3. Remove mysql container and re-run it.
4. php artisan migrate is done :)引用: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
上記を参考に下記のように行いました。
手順1
まず、laradock/mysql/my.cnf
に下記を追記しました。
[mysqld]
default_authentication_plugin= mysql_native_password
手順2
次に laradock/mysql/docker-entrypoint-initdb.d/
を確認しましたが、 createdb.sql.example
しかなかったので、コピペして createdb.sql
にリネームしました。
createdb.sql
の中身は下記にして保存しました。
CREATE USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpass';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpass';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
#
CREATE DATABASE IF NOT EXISTS `yourdb` COLLATE 'utf8_general_ci' ;
GRANT ALL ON `yourdb`.* TO 'admin'@'%' ;
FLUSH PRIVILEGES ;
手順3
docker もはじめて触ったのでここが謎でしたが、ぐぐりながら下記のようにやりました。
# docker の停止
docker-compose stop
# 停止しているコンテナの確認(mysqlのコンテナIDを確認)
docker ps -a
# mysqlコンテナの削除
docker rm [コンテナID]
# 新たにmysqlコンテナの作成
# docker-compose up mysql
上記のように行い、再度 php artisan migrate
をしましたが、同じくエラーが表示されました。
エラーを解消するにはどのようすれば、よろしいでしょうか。
ご存知の方いれば、教えてくださいm(__)m
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
+1
下記で解決しました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる