1. ホーム
  2. mysql

[解決済み] Docker MySQLコンテナにlocalhostから接続しますか?

2023-05-07 04:06:18

質問

dockerのmysqlイメージが動いていて、docker-compose.ymlファイルが以下のような感じです。

db:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: ""
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
  ports:
    - "3306:3306"

これは問題なく動作します。

私の質問は、ホスト (私の macbook) 上のコマンドライン mysql クライアントから、そのコンテナ上で実行されている MySQL インスタンスに接続するにはどうしたらよいかということです。

明確にするために

  • 私は Docker をインストールした macbook を持っています。
  • mysqlがインストールされたDockerコンテナを持っている
  • Macbook の Terminal から、前述のコンテナ上で動作している mysql インスタンスに接続したいのですが。
  • 私は docker コマンドを使いたくありません。むしろ、私が使いたいのは mysql クライアントをターミナルから直接使用したいのです (docker コンテナを経由してトンネルを掘ることなく)。

ローカルでMySQLを動かしていないので、ポート3306は開いていて使えるはずです。

コンテナを起動するのに使っているコマンドは docker-compose run

どのように解決するのですか?

使用方法 docker-compose up

あなたが公開したポート 3306 を公開しました。 ドッカーホスト に接続し、そのホスト自身から 127.0.0.1:3306 .

使用方法 docker-compose run

その場合、ポートマッピングセクションの docker-compose.yml ファイルのポートマッピングセクションは無視されます。ポートマッピングセクションを考慮させるためには、ポートマッピングセクションに --service-ports オプションを追加する必要があります。

docker-compose run --service-ports db

補足説明

デフォルトでは、mysql クライアントは、接続先として localhost . そのため 127.0.0.1 でなく localhost :

 $ mysql -h 127.0.0.1 -P 3306 -u root

MySQLモニターへようこそ。 コマンドは ; または \g で終わります。 あなたのMySQL接続IDは1です。 サーバーバージョン: 5.6.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle および/またはその関連会社. すべての著作権を保有します。

Oracleは、Oracle Corporationおよび/またはその関連会社の登録商標です。 関連会社の登録商標です。その他の名称は、それぞれの所有者の商標である可能性があります。 所有者の商標である場合があります。

help;'または' \h' と入力するとヘルプが表示されます。現在の入力文をクリアするには'˶‾‾‾'˶‾‾‾'˶‾‾‾'と入力してください。

mysql>

$ mysql -h localhost -P 3306 -u root

<ブロッククオート

エラー 2002 (hy000)。ソケット '/var/run/mysqld/mysqld.sock' を介してローカルのMySQLサーバーに接続できません (2)。