LoginSignup
0
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-01-09

Dockerで環境構築していた際につまづいたので、メモりました。
ご参考になれば幸いです。

概要


下記記事を参照してLaravel+React+MySQLの環境をDockerで作成しようとしたところ
エラーが発生しました。

エラー内容

タイトルにある通り、以下のエラーが発生しました。

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

DB(MySQL)への接続が上手くいっていないらしい...

調査結果

コンテナの起動確認

tarminal
$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                          PORTS                               NAMES
737e1499b7c0   9df10d5fd4e9   "/entrypoint.sh mysq…"   About a minute ago   Exited (1) About a minute ago                                       docker-laravel_db_1
d11753ef631f   f5bc33c1bffa   "/docker-entrypoint.…"   6 minutes ago        Up 6 minutes                    0.0.0.0:80->80/tcp, :::80->80/tcp   docker-laravel_web_1
1055b9270a37   198704a55e0c   "docker-php-entrypoi…"   6 minutes ago        Up 6 minutes                    9000/tcp                            docker-laravel_app_1

dbコンテナだけSTATUSが「Exited」のままで起動していない

ログ確認

tarminal
$ docker logs <コンテナID>
[Entrypoint] MySQL Docker Image 8.0.27-1.2.6-server
[Entrypoint] Starting MySQL 8.0.27-1.2.6-server
2022-01-09T05:11:30.261390-00:00 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27) starting as process 1
2022-01-09T05:11:30.264356-00:00 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/var/lib/mysql/' (OS errno: 13 - Permission denied)
2022-01-09T05:11:30.264532-00:00 0 [ERROR] [MY-010119] [Server] Aborting
2022-01-09T05:11:30.264761-00:00 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.27)  MySQL Community Server - GPL.
[Entrypoint] MySQL Docker Image 8.0.27-1.2.6-server
[Entrypoint] Starting MySQL 8.0.27-1.2.6-server
2022-01-09T05:11:44.674545-00:00 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27) starting as process 1
2022-01-09T05:11:44.677153-00:00 0 [ERROR] [MY-013276] [Server] Failed to set datadir to '/var/lib/mysql/' (OS errno: 13 - Permission denied)
2022-01-09T05:11:44.677246-00:00 0 [ERROR] [MY-010119] [Server] Aborting
2022-01-09T05:11:44.677499-00:00 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.27)  MySQL Community Server - GPL.

/var/lib/mysqlにデータを永続化したかったけど、マウントするところでアクセス権限がないよって怒られてますね。

解決策

ググったところ、下記記事が参考になりました。

この記事の中に下記の文言が記載されている

つまり、マウントしたディレクトリに書き込めるのは、root か uid=1000 のユーザだけである。

my.cnfに記載されている動作ユーザの権限が「mysql」になっていたので、権限を「root」に変更してビルドしたところ無事解決!!

tarminal
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (65.04ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (43.12ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (40.74ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated:  2019_12_14_000001_create_personal_access_tokens_table (68.47ms)
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