Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴

Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴

最近、ポーターを学んでいます。こんなに強力なものがあったなんて、今まで知らなかった気がします。クラスメイトが参考にできるように、いじっている過程を記録しておきました。

ステップ0: Docker Hubから公式MySQLイメージを取得する

docker pull mysql

すると、待ち時間が長くなります。もちろん、ミラーアクセラレータを設定すれば、速度は少し速くなります。

ステップ1: docker imagesコマンドを使用してイメージを表示する

ここにMySQLのミラーがすでにあることがわかります

ステップ2: MySQLイメージを起動し、MySQLコンテナを作成する

使用するコマンド: docker run -d --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

ここでパラメータを説明します。

-dはバックグラウンドで実行され、現在のコマンドラインウィンドウで終了しないことを意味します

--name はコンテナに別名を与え、将来コンテナを管理するために使用できます。

-p 3307: 3307 はホストのポート 3307 を MySQL コンテナのポート 3306 にマッピングします。

-e MySQLコンテナ環境設定

MYSQL_ROOT_PASSWORD=123456は、mysql のパスワードを指定します。デフォルトのユーザー名は root です。パスワードを指定しないと起動に失敗することに注意してください。

ステップ3: 起動したmysqlコンテナを表示する

使用コマンド: docker ps

ご覧のとおり、MySQL コンテナはすでに実行されています。Docker は、管理しやすいように MySQL コンテナにコンテナ番号を割り当てます。また、設定したポート マッピングも表示されます。

このとき、MySQL コンテナは正常に動作しているのに、ポート番号しか教えてくれないのに、どうやって IP を知ることができるのか、と思う人もいるかもしれません。信じられない、あなたは悪いおじいさんです。

いやいやいや。 docker inspect -f = '{{ を使用できます。 NetworkSettings.IPAddress}}'5fef288f221f コマンドを使用して、コンテナーの IP アドレスを表示します。最後に、表示するコンテナーの ID を直接書き込むことができることに注意してください。インターネット上のそれらの人々は非常に悪く、あなたに <> を追加し、あなたを非常に落ち込ませます。私の方法に従うだけで、あなたは正しいでしょう。

もう一つ注意すべき点は、リモート管理のために外部からMySQLコンテナに接続する場合、コンテナ内のmysqlルートアカウントのホストを設定し、ワイルドカード%に変更して、どのホストでもMySQLに接続できるようにする必要があることです。具体的な方法は次のとおりです。

MySQlコンテナに入ります。docker execコマンドを使用します。-itはパラメータで、bashは対話型インターフェースを作成することを意味します。

MySQL サーバーにログインします。root ユーザーを使用して MySQL にログインします。パスワードを入力すると、MySQL にログインしたことがわかります。

show database; コマンドを使用してデータベースを表示します (最後のセミコロンを忘れないように注意してください。すべての MySQL コマンドにはセミコロンが必要です)

ご覧のとおり、データベースがリストされているので、mysql; コマンドを使用してこの MySQL データベースに入ります (少しわかりにくいですか? ハハハ、ここでの MySQL データベースはこのデータベースを指します。わかりました、まだ明確に説明していないかもしれません)

次に、show tables;コマンドを使用してすべてのテーブルを一覧表示します。

ご覧のとおり、テーブルがたくさんあります。これらはすべて MySQL の設定です。気にしないでください。変更する必要があるのは 1 つのユーザー テーブルだけです。

sql コマンドを使用します: update user set host ='%'where user ='root';

MySQLに複数のルートユーザーがいる場合、このコマンドでエラーが発生する場合があります。その場合は、次のコマンドを使用してください。

ユーザーを更新し、host='%' を設定します。ここで、user='root'、host='localhost' です。

上記の手順を設定したら、接続をテストできます。接続できれば、おめでとうございます。幸運です。

接続できない場合は、ダウンロードした MySQL イメージが mysql8 であるため、おめでとうございます。

次のエラーが発生する可能性があります

この時点で設定は完了です。exit; コマンドを使用して終了します。

リモート接続のテスト

ステップ4: MySQLコンテナにデータをインポートする

MySQL コンテナは実行されていますが、データがありません。次の方法で、docker の MySQL にデータベースをインポートできます。

まず、ファイルをコンテナにインポートします。cp の後に、インポートする SQL ファイルのパスが続きます。

#docker cp **.sql mysql:/root/
コンテナに入る#docker exec -it mysql bash
ファイルをデータベースにインポートします# mysql -uroot -p [データベース名] < ***.sql

mysql -h localhost -u root -p (mysqlを入力)
データベース abc を作成します。(データベースを作成します)
show databases; (既存のすべてのデータベースと、作成したばかりのデータベース abc が表示されます)
abc を使用します (abc データベースを入力します)
テーブルを表示; (abc データベースの下にあるすべてのテーブルを表示、空)
source /var/test.sql (データベーステーブルをインポート)
テーブルを表示します。(abc データベースの下にあるすべてのテーブルを表示すると、テーブルが表示されます)
汚染の説明(表構造設計を参照)
汚染から*を選択します。
exit (または ctrl + c) でmysqlを終了します

要約する

上記は、編集者が紹介したDockerでMySQLサービスをデプロイする方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • Docker で MySQL データベースを使用する方法の詳細説明 (LAN でのアクセス)
  • docker で mysql に接続できない場合の解決策
  • DockerにMySQL 8.0をインストールする方法
  • DockerコンテナでのMySQLデータのインポート/エクスポートの詳細な説明
  • Docker に MySQL インスタンスをインストールして実行する
  • dockerログインmysqlエラー問題の実践記録

<<:  WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

>>:  Windows での MySQL データベースのマスター/スレーブ構成チュートリアル

推薦する

HTMLはテキスト行のインターセプトの実装原理とコードを超えています

複数行を超えるテキストをインターセプトするための HTML コードは次のとおりです。 HTML:コー...

リストループスクロールを実現するための HTML+CSS+JavaScript サンプルコード

説明: 指定された時間内に前のノードのコンテンツを置き換えるタイマーを設定します。 1. キーコード...

TypeScript で時間を費やした場所の概要

TS で時間を過ごした場所をいくつか記録します。 (まず、文句を言わせてください。stackover...

jQueryはフォーム検証機能を実装します

jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...

CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

この記事では、MySQL Workbenchのインストールと設定のチュートリアルを参考までに紹介しま...

IE8 ベータ 1 には注意が必要な 2 つの領域があります

<br />関連記事: Web スキル: 複数の IE バージョンを共存させるソリューシ...

インラインブロックを使用した複数のdiv間の間隔はプログラミング方法とは異なります

inline-block について学習しているときに、境界線と inline-block を持つ複数...

Windows オペレーティング システムでの Linux 仮想マシンのインストールと構成のチュートリアル

序文仕事では、Linux 環境で操作する必要があることがよくあります。ここでは、win10 システム...

Nginx で何ができるかの包括的な分析

序文この記事は、サードパーティのモジュールをロードせずにNginxで処理できることのみに焦点を当てて...

HTMLファイルとは何ですか?HTMLファイルを開く方法

HTML は Hypertext Markup Language の略です。現在、ほとんどの Web...

MySQL 関数インデックス最適化ソリューション

MySQL を使用する場合、多くの開発者は一部の列に対して関数計算を実行することが多く、その結果、イ...

vue cli で env を使用するガイド

目次序文紹介-公式設定例序文vueCli を使用してプロジェクトを開発したことのある方は、少しがっか...

MySQLインデックスが使用されない状況のまとめ

MySQL のインデックスの種類一般的に、次の 4 つのカテゴリに分類できます。通常のインデックス:...

Reactは二次連結(左右連結)を実現する

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

MySQLのタイムゾーンを表示および設定する方法

1. データベースのタイムゾーンを確認する '%time_zone' のような変数を...