Docker を使用して MySQL データベースを構築すると、MySQL に接続できないという問題が発生することがあります。これは、ネットワークの問題、構成の問題、またはその他の問題が原因である可能性があります。この記事では、この問題を解決する方法について説明します。
1. ネットワーク接続を確認する
まず、Docker コンテナとローカル ホストの間のネットワーク接続が正常であることを確認する必要があります (ping コマンドで検出できます)。ローカル ホストでターミナルを開き、次のコマンドを実行します:
$ ping <docker容器IP>
このうち、
ping が正常に実行できる場合は、ネットワーク接続が正常であることを意味します。ping が正常に実行できない場合は、ネットワーク障害のトラブルシューティングを行う必要があります。
2. MySQL コンテナの設定を確認する
ネットワーク接続が正常であれば、MySQL コンテナの設定ファイルを確認する必要があります。以下のコマンドを実行します:
$ docker exec -it <container ID> /bin/bash $ cd /etc/mysql $ cat my.cnf
このうち、<コンテナID>はMySQLコンテナのIDです。
my.cnf ファイルの構成、特にネットワーク設定の構成が正しいかどうかを確認してください。
3. MySQL ユーザーを作成して認可する
MySQL コンテナの構成が正常な場合は、適切な MySQL ユーザーが作成され認可されているかどうかを確認する必要があります。
MySQL コンテナで、次のコマンドを実行します。
$ mysql -u root -p
root パスワードを入力して、MySQL コンソールに入ります。
次の SQL ステートメントを実行してユーザーを作成します。
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
このうち、「ユーザー名」と「パスワード」は、それぞれ作成するユーザー名とパスワードです。
次に、ユーザーを承認します。
GRANT ALL ON *.* TO 'username'@'%';
ここで、「username」は、先ほど作成したユーザー名です。
最後に、次のコマンドを実行して変更を保存し、MySQL コンソールを終了します:
FLUSH PRIVILEGES; EXIT;
4. ファイアウォール設定を確認します
それでも MySQL に接続できない場合は、ファイアウォールの設定に問題があることが原因である可能性があります。 MySQL 接続をブロックするファイアウォールがあるかどうかを確認する必要があります。
ローカルホストで次のコマンドを実行して、ポートがファイアウォールで占有されているかどうかを確認します:
$ sudo netstat -tunlp | grep <MySQL容器端口>
このうち、
ポートがすでに使用されている場合は、ポートを有効にする必要があります。 Ubuntu システムを例として、次のコマンドを実行してポートを開きます:
$ sudo ufw allow <MySQL容器端口>/tcp
このうち、
別のオペレーティング システムの場合は、対応するオペレーティング システムの設定に従ってポートを開く必要があります。
5. MySQL コンテナを再起動します
最後に、上記の 4 つの手順で問題が解決しない場合は、MySQL コンテナを再起動してみてください。
次のコマンドを使用して MySQL コンテナを再起動できます:
$ docker restart <container ID>
このうち、<コンテナ ID> は MySQL コンテナの ID です。
概要
Docker MySQL に接続できない問題はさまざまな理由で発生する可能性があるため、それらを 1 つずつ解決する必要があります。まずネットワーク接続が正常であるかどうかを確認し、次に MySQL コンテナの構成を確認し、MySQL ユーザーを作成して認可し、ファイアウォールの設定を確認して、最後に MySQL コンテナを再起動してみます。上記のどの手順でも問題が解決しない場合は、別の MySQL イメージに変更するか、他の解決策を探すことを検討してください。
以上がdocker が mysql に接続できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。