質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

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

Q&A

1回答

532閲覧

【Laravel sail】migrate実行後にMySQLのアクセスに失敗する

Kotarom_24

総合スコア25

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

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

0グッド

0クリップ

投稿2023/01/15 06:43

編集2023/01/15 19:10

前提

Laravel sailを使って環境構築をしています。
https://laravel.com/docs/9.x/installation#laravel-and-docker
ドキュメント通りに環境を作り、migrateの実行に成功しました。

migrateはできたのですがDBのアクセスに失敗しており、その原因を教えていただきたいです。

発生している問題・エラーメッセージ

migrate後にDBにアクセスできません。アクセスしようとすると下記のエラーが発生します。

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: nodename nor servname provided, or not known

Sequel

1Access denied for user 'sail'@'localhost' (using password: YES)

該当のソースコード

Laravel sailで自動生成されたコードから一切変更していません。

docker

1mysql: 2 image: 'mysql/mysql-server:8.0' 3 ports: 4 - '${FORWARD_DB_PORT:-3306}:3306' 5 environment: 6 MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' 7 MYSQL_ROOT_HOST: "%" 8 MYSQL_DATABASE: '${DB_DATABASE}' 9 MYSQL_USER: '${DB_USERNAME}' 10 MYSQL_PASSWORD: '${DB_PASSWORD}' 11 MYSQL_ALLOW_EMPTY_PASSWORD: 1 12 volumes: 13 - 'sail-mysql:/var/lib/mysql' 14 - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' 15 networks: 16 - sail 17 healthcheck: 18 test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"] 19 retries: 3 20 timeout: 5s
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=src DB_USERNAME=sail DB_PASSWORD=password

現状と試したこと

  • .envとyaml内の値は自動生成されました。変更していません。
  • migrateは実行できています。
  • tablePlusとSequel Aceでアクセスできるか確認→どちらもアクセス失敗

エラーメッセージの検索結果を一通り見たのですが、migrate実行時に失敗している内容しか見当たらず、原因がわかりませんでした。

yamlや.envの内容に問題があるのかと考えたのですが問題は見つかりませんでした。

※ページ表示は問題なくできています。

バージョンなど

  • PC: Mac M1
  • docker-compose.yaml: "3"
  • composer: 2.2.1
  • php: 8.2.1
  • laravel/framework: 9.47.0
  • mysql 8.0
  • laravel/sail: ^1.18

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

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

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

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

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

guest

回答1

0

Sequel Aceなどのコンテナ外からコンテナ内のDBに接続するには
Host: localhostで接続する。portやパスワードなどは.envで設定した通り。
コンテナ外のブラウザからは http://localhost/ で表示するのと同じ。

Hostmysqlで接続できるのはコンテナ内からのみ。

投稿2023/01/15 08:25

kawax

総合スコア10377

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

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

Kotarom_24

2023/01/15 08:58

Hostをlocalhostにすることで接続できました。 Laravel sailはコンテナ外から作業することが基本なんですね。 ありがとうございます!
Kotarom_24

2023/01/15 10:10

Sequel AceからDBにアクセスすることには成功したのですが、アプリ側からDBにアクセスしようとすると下記エラーが起きます。 ``` SQLSTATE[HY000] [2002] No such file or directory ``` エラーメッセージを検索したら、 - unix_socketの値を設定 - localhostではなく、127.0.0.1をhost名にする などの解決策が出てきたのですが、同じエラーが出続けました。 この場合、どこを修正すればいいのでしょうか??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問