前提・実現したいこと
Dockerの勉強を行っており、MySQLとPHP+Apacheの各コンテナを作成しました。
PHP+ApacheコンテナからMySQLコンテナへの接続は問題なく行えたのですが、
ホスト側からコマンドプロンプト、A5M2などを使用してMySQLコンテナへ接続しようとしてもエラーが出て接続することができません。
ホスト側にもMySQL最新版を入れております。
ホスト側からMySQLコンテナへ接続できる方法をご教示ください。
よろしくお願いいたします。
<追記>
t_obaraさんよりいただいたURLの結果を追加しました。
発生している問題・エラーメッセージ
下記、コマンドプロンプトから接続を試したときのコマンドとエラーメッセージです。
>mysql -h 127.0.0.1 --port 3309 -u root -p Enter password: ******** ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (10061)
該当のソースコード
docker-compose.yml
version: '3' services: db: container_name: bbs_mysql build: ./db ports: - "3309:3306" environment: MYSQL_DATABASE: db_bbs MYSQL_ROOT_PASSWORD: rootpass command: "--innodb_use_native_aio=0" volumes: - ./db/db_data:/var/lib/mysql - ./db/sqls:/docker-entrypoint-initdb.d web: container_name: bbs_php_apache build: ./web ports: - "8099:80" volumes: - ./app:/var/www/appBbs - ./web/000-default.conf:/etc/apache2/sites-available/000-default.conf - ./logs:/var/log/apache2 depends_on: - db
Dockerfile
FROM mysql:8.0 COPY ./my.cnf /etc/mysql/conf.d/
my.cnf
[mysqld] character-set-server=utf8mb4 default_authentication_plugin = mysql_native_password [client] default-character-set=utf8mb4
作成したコンテナ
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cae0960fceba bbs_web "docker-php-entrypoi…" 7 seconds ago Up 3 seconds 0.0.0.0:8099->80/tcp bbs_php_apache f2e1877a8d62 bbs_db "docker-entrypoint.s…" 11 seconds ago Up 8 seconds 33060/tcp, 0.0.0.0:3309->3306/tcp bbs_mysql
<追記>
1. 外部サーバーへpingコマンドを叩く
>ping 127.0.0.1 127.0.0.1 に ping を送信しています 32 バイトのデータ: 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms
⇒返答あり
2. 外部サーバーに直接ログインし、サーバー上でMySQLにアクセス
mysql> show variables like 'port'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ 1 row in set (0.01 sec) mysql> select host, user from mysql.user; +-----------+------------------+ | host | user | +-----------+------------------+ | % | root | | % | user | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+------------------+ 6 rows in set (0.00 sec)
⇒portが3306なのは、コンテナ内なので問題なしのはず。。
ユーザーも、root@%がいるためアクセス可能のはず。。
3. /etc/mysql/my.cnfの確認
root@f2e1877a8d62:/etc/mysql# cat my.cnf # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # The MySQL Server configuration file. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Custom config should go here !includedir /etc/mysql/conf.d/
⇒bind-addressの記載なし。自分で作成したmy.cnfにも記載していない状態。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/02 02:17
2018/10/02 07:49
2018/10/02 08:12
2018/10/02 08:46
2018/10/03 07:35
2019/07/17 05:35