0
0

MySQLコンテナの接続エラーは exec コマンドで解決

Last updated at Posted at 2024-07-23

はじめに

環境構築でDockerのコンテナで遭遇したエラーを共有します。

問題

環境構築で次のコマンドを実行したところ、MySQLの接続に失敗しました。

docker-compose up -d
docker-compose run --rm db bash
mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock

解決方法

問題の解決に docker-compose exec コマンドを使用しました。このコマンドは既に稼働しているコンテナ内でシェルを開きます。

docker-compose exec db bash 
mysql -u root -p

この方法は、既に起動しているMySQLサーバーのコンテナ内でコマンドを実行するので、MySQLクライアントが正しいソケットに接続することができます。正常に接続できた場合、次のような成功メッセージが表示されます。

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.19 MySQL Community Server (GPL)

原因

docker-compose run コマンドは、新しいコンテナを起動し、その中で指定したコマンドを実行します。この新しいコンテナは、既存のMySQLサーバーコンテナとは独立しています。そのため、MySQLサーバーが稼働していないので、ローカルソケットへの接続が失敗します。

おわりに

以下の記事を参考に、IPアドレスを取得してアクセスすることで解決していたのですが、途中からIPアドレスを指定しても、MySQLに接続することができなくなりました。

そこで、docker psでコンテナが同時に立ち上がっていることに気づき、docker-compose run コマンドの挙動について、理解することで根本的に解決することができました。

参考

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