0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker】MySQL接続エラー「php_network_getaddresses: getaddrinfo failed: Name or service not known」

Last updated at Posted at 2021-07-17

はじめに

コンテナの初回起動(DBマイグレーション)時に表題エラーが発生しました。
こちらの記事の方法を試すも、直らず。。。

同事象の方の参考になれば幸いです。

エラー内容

Docker Composeでイメージビルドとコンテナを起動し、コンテナ内でマイグレーションを実行すると下記エラーが発生

$ docker-compose exec app php artisan migrate:fresh --seed

   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
    667|         // If an exception occurs when attempting to run a query, we'll format the error
    668|         // message to include the bindings with SQL, which will make this exception a
    669|         // lot more helpful to the developer instead of just the database's errors.
    670|         catch (Exception $e) {
  > 671|             throw new QueryException(
    672|                 $query, $this->prepareBindings($bindings), $e
    673|             );
    674|         }
    675| 

      +45 vendor frames 
  46  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))


DB接続で落ちているエラーっぽい。

試しにコンテナ起動をしてみると、

$ docker-compose up
Docker Compose is now in the Docker CLI, try `docker compose up`

// 略

db_1   | 2021-07-17 02:15:11+00:00 [ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user
db_1   |     Remove MYSQL_USER="root" and use one of the following to control the root user password:
db_1   |     - MYSQL_ROOT_PASSWORD
db_1   |     - MYSQL_ALLOW_EMPTY_PASSWORD
db_1   |     - MYSQL_RANDOM_ROOT_PASSWORD
XXXX_db_1 exited with code 1

MYSQL_USERとMYSQL_PASSWORDには、rootを使用するな(通常ユーザーを使用しろ)というエラーっぽいですね。
root以外の任意の値を指定すれば良さそうです。

これで解決

.envのDB_USERNAMEのvalue値(root)を削除して、

// 略

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3308
DB_DATABASE=laravel
DB_USERNAME=
DB_PASSWORD=

// 略

コンテナ再起動して、DBマイグレーション再実行で解決!

docker-compose down
docker-compose up -d
docker-compose exec app php artisan migrate:fresh --seed
// エラー出ない!よっしゃ!

最後に

MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user

これを読むと、MYSQL_USER(とPASSWORD)は通常ユーザーのためのもので、rootユーザーには使用できないと書かれてますね。
前は、rootのままで行けた気がしますが。。。とりあえず直ったのでよし!ですね!!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?