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 データベースのマスター/スレーブ構成チュートリアル

推薦する

TypeScript 学習ノート: 型の絞り込み

目次序文型推論真理値の絞り込み平等の縮小演算子の絞り込みインスタンスの絞り込み狭まりの本質ユニオン型...

MySQLのSQL文はインデックスを使用しません

インデックス集約を使用しない MySQL クエリご存知のとおり、インデックスを追加することはクエリ速...

MySQLは文字列関数のSQL文をインターセプトします

1. left(name,4)は左の4文字をインターセプトしますリスト: SELECT LEFT(2...

Linux の Centos7 に Mysql5.7.19 をインストールする詳細なチュートリアル

1. MySQLをダウンロードするURL: https://dev.mysql.com/downlo...

Vue.js ドラッグ可能なテキストボックスコンポーネントの使用方法の詳細な説明

目次コンポーネントの登録コンポーネントの追加ソースコードドラッグ可能なテキスト ボックスでは、ユーザ...

Linuxシステムにおけるキー認証に基づくSSHサービスのプロセス

ご存知のとおり、SSH は現在、リモート ログイン セッションやその他のネットワーク サービスにセキ...

VMware ワークステーション 12 に Ubuntu 14.04 (64 ビット) をインストール

1. インストール環境コンピュータモデル: Lenovo Y471a (i5) ノートパソコンシステ...

HTML で複数のクラス属性を定義する場合の無効な解決策

HTML を記述する過程で、クラス属性に複数の値を定義することがよくありますが、定義した値が無効であ...

Vue デフォルトスロットの理解とサンプルコード

目次スロットとは何かデフォルトスロットの理解コードスニペット要約するスロットとは何かスロットは、親コ...

SQL Server 2019 Always On クラスターの Docker デプロイメントの実装

目次Docker デプロイメント Always on クラスターDockerをインストールする建築関...

WeChatアプレットがSMSログインを実装

目次1. インターフェース効果のプレビュー2.uViewのインストール3.uViewの設定3.1 m...

nginxで複数のサーバーを簡単に構成する方法

1: nginx のインストール方法については詳しく説明しません。Baidu で検索してください。 ...

CSS3でシャトル星空のアニメーションを実現

結果: html <canvas id="スターフィールド"><...

ElementUIはカスケードセレクタを実装します

この記事の例では、カスケードセレクターを実装するためのelementUIの具体的なコードを参考までに...

Vueのトグルボタンをクリックしてボタンを有効にし、無効にします。

実装方法は3つのステップに分かれています。テンプレートに 2 つのボタンを設定し、v-if と v-...