osxのdocker内のmysqlに接続できません

osxのdocker内のmysqlに接続できません

タグ:




質問

最近、私のdockerコンテナは接続を拒否しています。過去にはうまくいきましたが、この問題は新しく、これまでの説明はありません。

コンテナの停止と再起動は効果がありません。
または Mac用Desktop for Desktopの停止と再起動は効果がありません。

OSXラップトップを再起動するだけで解決できます。 (macOS Mojave v 10.14.5) その後、しばらくの間動作し、接続の試行をブロックし始めます

私はコンテナにexecすることができます。

docker exec -it db /bin/bash

コンテナ内からmysqlに問題なくアクセスできます。

私はそれをデバッグしようとするmysqlの一般的なログを有効にしようとしました: それは活動を示していません…

私のラップトップにはフリーディスクスペースがたくさんあります(188GB無料)

これはすべて過去6ヶ月間うまくいきましたが、先週かそこらで簡単に作業した後、突然接続をブロックし始めました….

手がかりやアイデアをありがとう

ここに私のDockerfileがあります

FROM mysql:5.7

RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-utils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y procps
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y debianutils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y iputils-ping
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y net-tools
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y vim
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y less
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y man
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y sudo

WORKDIR .

COPY ./my.cnf /etc/mysql/my.cnf

#CMD [“mysqld”, “–general_log=1”, “–log-raw”, “–log-error”]
CMD [“mysqld”]

私のdocker-composeファイル:

(MYSQL_DATA_FOLDERは、有効なパスに設定された環境変数です。

version: ‘3.5’
services:
database:
image: database
ports:
– “3306:3306”
environment:
MYSQL_ROOT_PASSWORD: “”
MYSQL_ALLOW_EMPTY_PASSWORD: “yes”
volumes:
– mydatavolume:${MYSQL_DATA_FOLDER}
build:
context: .

volumes:
mydatavolume:

networks:
default:
name: dev_network
driver: bridge

私はそれを始める方法:

docker-compose build;
docker-compose run –service-ports –volume=$MYSQL_DATA_FOLDER:/var/lib/mysql –name db –rm database

どのように私は通常(osx端末のmysqlクライアント経由で)接続する

mysql -h localhost -P 3306 –protocol=tcp -u root

また、127.0.0.1を使用してバリエーションを試しました。また、docker inspectによって公開されたIPアドレスも試しました

私のmy.cnf

[mysqld]
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

追加しようとしました:

bind-address=0.0.0.0

上記に…助けにはならない

ユーザーテーブル

mysql> SELECT host, user FROM mysql.user;
+———–+—————+
| host | user |
+———–+—————+
| % | root |
| % | some_user |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+———–+—————+
5 rows in set (0.01 sec)

新しい情報:

データボリュームを削除し、新しいボリュームを作成させました。今問題はなくなったので、Dockerの問題ではなくMySQLの問題のようです。私はまだそれが発生したときにこの種のMySQLの問題をデバッグする方法を知りたいです..

ベストアンサー

rootユーザーからの接続を妨げているセキュリティ制限があるかもしれません。次のように必要な権限を持つローカルユーザーを作成しようとできますか?

mysql> CREATE USER ‘some_user’@’%’ IDENTIFIED BY ‘some_pass’;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘some_user’@’%’ WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

コンテナを再起動し、ローカルユーザーを使用して接続を試みます。

mysql -h 127.0.0.1 -u some_user –protocol=TCP -P 3306 -p







source
OSXのDockerコンテナに接続できません
Docker内のMySQLサーバーに接続できません
NodeJSはDockerコンテナ内のMYSQLに接続できませんでした
ローカルからmysql dockerに接続できません
Docker-ComposeはMySQLに接続できません
docker mysqlはコンテナに接続できません
Dockerコンテナからmysqlに接続できませんか?
PHP経由でdocker mysqlに接続できません
Dockerコンテナ内のmysqlは、osxにマウントされたボリュームを介して実行できません
ホストからdockerコンテナ内のmysqlに接続する
Rating