🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

917閲覧

DockerでLaravel データベースのマイグレーションで1045エラー

RukaMenda

総合スコア17

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/11/21 10:40

編集2019/11/21 12:59

現在「PHPフレームワーク Laravel Wevアプリケーション開発」という書籍で学習を進めております。
https://www.amazon.co.jp/dp/4802611846/ref=cm_sw_em_r_mt_dp_U_aBM1Db6AS3S2R

書籍ではVagrantとHomesteadを利用してサイト構築を進めておりますが、諸事情あり今回はDockerでサイト構築をしてゆきたいと思っています。
本書のp34,35に「$ php artisan migrate」というコマンドを使ってマイグレーションを行うという工程がありますが、こちらがうまくゆきません。

ターミナルで実行すると以下の結果が帰ってきます。

In Connection.php line 664: SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'172.22.0.1' (using password: YES) (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations) In Connector.php line 67: SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'172.22.0.1' (using password: YES)

実は今回作業の順序としては、
0. VagrantとHomesteadで環境構築
0. DockerとLaradockで環境構築
0. 以降の学習はDocker上で

と進めており、おそらく最初にHomesteadで環境を構築したことが今回のエラーの一要因なのかな、と思っていたりします。
しかしその解決方法が調べてもなかなかわかりません。

もしかしたらDocker上でのマイグレーションの手順はHomesteadの場合と異なる=書籍の手順通りに進めてもできない、なのかなとも思ったのですが、今回の場合は事前に.envファイルか何かに、SQLの接続設定などをあらかじめする必要があるのでしょうか?

最終的にやりたいことは、Laravelに標準で用意されている認証・登録機能実装のための、データベースおよびテーブルの作成です。
恐れ入りますがお分かりの人がおられましたら、ご教示板開けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

先ほど事象を解決することができましたのでご報告いたします。

まず私の認識から大前提が漏れており、それをみなさまにも共有しておりませんでした。すみません。
その前提とは、laradockを使っているということです。

そこが私の認識から抜けていたので、laradockを使わずにDocker上にlaravel環境を構築する方法ばかり調べていたので、いつまでも解決できませんでした。

以下、実施した手順です。


手順1:
まずは下記サイトの「MySQLへの接続設定」、「Workspaceコンテナへの接続」、「artisanコマンドを使う」の順に実行
https://liginc.co.jp/364089

*元スレの通り、私は「PHPフレームワーク Laravel Wevアプリケーション開発」という書籍を参考にして環境構築しているので、上記サイトのsrcはsampleappに読みかえて実行しました。

すると、下記エラーが出てくる(エラー内容が変わっている)。

In Connection.php line 664: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_sche ma.tables where table_schema = default 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]

手順2:
上記エラー解決のため、下記リンクの「【解決方法2】 MySQLの認証方法の変更」を実行
https://qiita.com/ntakuyan/items/42cbe7f45e85e16fe639
*途中で

ALTER USER 'homestead'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';

というSQL文の実行がありますが、こちらは手順1で行った設定にそぐうように、'homestead'を'default'に変えて実行しました。


上記完了後、再度workspaseに入って'php artisan migrate'とコマンドを打つと・・・、

Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table

できました!

忘備録のためにも追記です。
一旦workspaceから出て(コマンドで'exit'と打つ)、再度

$ docker exec -it 95bae1d74f29 /bin/bash

でmysqlに入り、

# mysql -u root -p mysql> show databases; mysql> use default; mysql> show tables;

の順にコマンドを実行すると、
+-------------------+
| Tables_in_default |
+-------------------+
| migrations |
| password_resets |
| users |
+-------------------+
3 rows in set (0.01 sec)

きちんとテーブルが作成されていることを確認しました。

投稿2019/11/22 09:45

編集2019/11/22 10:08
RukaMenda

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

今回の場合は事前に.envファイルか何かに、SQLの接続設定などをあらかじめする必要があるのでしょうか?

あります。
.envにDocker用のDB接続設定をかいた上(設定情報は環境による)
php artisan config:clear
でconfigのキャッシュを破棄した後
再度php artisan migrate を行なってください

投稿2019/11/22 04:23

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RukaMenda

2019/11/22 09:26

ご教示いただきありがとうございます。 .envに接続情報の記載が必要である、という点は勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問