[解決済み] ホストからDockerコンテナ内のmysqlに接続する
2022-04-20 23:32:13
質問内容
(Dockerやmysqlの管理に関する知識が乏しいため、馬鹿な質問かもしれませんが、この問題に一晩中費やしたので、あえて質問させていただきます)。
一言で言うと
dockerコンテナでmysqlを実行し、私のホストからそれに接続したいです。これまでのところ、私が達成した最高のものは、次のとおりです。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
詳細
私は以下のように使っています。
Dockerfile
:
FROM ubuntu:14.04.3
RUN apt-get update && apt-get install -y mysql-server
# Ensure we won't bind to localhost only
RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \
&& mv temp.txt /etc/mysql/my.cnf
# It doesn't seem needed since I'll use -p, but it can't hurt
EXPOSE 3306
CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log
このファイルがあるディレクトリで、イメージのビルドに成功し、実行することができます。
> docker build -t my-image .
> docker run -d -p 12345:3306 my-image
画像に添付すると、問題なく動作しているようです。
# from the host
> docker exec -it <my_image_name> bash
#inside of the container now
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
[...]
しかし、ホストの成功率はそれほど高くはありません。
> mysql -P 12345 -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
さらに詳しく
-
という質問があるのを見かけました。
私のような
. しかし、それは同じではありません(そして、それはとにかく答えを持っていません)。
- という画像があるのを見たことがあります。 mysql専用 しかし、私はそれ以上の成功を収められませんでした。
-
私の
grep -v
は変に感じるかもしれません。確かに、もっときれいなやり方があるかもしれません。しかし、私の画像を添付すると、実際に期待通りに動作していることがわかります。bind-address
). そして、コンテナの中にある/var/log/mysql/error.log
:
サーバーのホスト名(bind-address): '0.0.0.0'; ポート。3306 - '0.0.0.0' は '0.0.0.0' に解決されます。 サーバーソケットがIP: '0.0.0.0' に作成されました。
解決方法は?
ローカルホストの代わりに127.0.0.1"を使用すると、mysqlはtcpメソッドを使用し、コンテナに接続することができるようになるはずです。
mysql -h 127.0.0.1 -P 3306 -u root
関連
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
MySQLインストールチュートリアル(Windows用)詳細
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
Mysqlのソート機能の詳細
-
[解決済み] datetimeの挿入時に文字列から日付や時刻を変換すると、変換に失敗する
-
[解決済み] ユニークなテーブル/エイリアスではない
-
msql クエリでのエラー 'where 節' の不明な列 'yellow fruit'
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?