MySQL (8 および 5.7) の Docker インストール

MySQL (8 および 5.7) の Docker インストール

この記事では、Dockerを使用してMySQLデータベースとリモートアクセス構成をデプロイする方法を紹介します。

MySQLをインストールする

画像をプルする

MySQL データベース イメージをプルするには、次のコマンドを使用します。

$ sudo docker pull mysql # イメージの最新バージョンをプルします。現在は MySQL 8、タグは最新です

$ sudo docker pull mysql:5.7 # MySQLバージョン5.7をプルするように指定します

検索コマンドを使用して、人気度を表す星の数でマークされた他の MySQL 関連のミラーを見つけることもできます。

$ sudo docker 検索 mysql

MySQLの実行

$ sudo docker run -p 3306:3306 \
  --name mysql \
  -v $PWD/conf:/etc/mysql/conf.d \
  -v $PWD/ログ:/ログ\
  -v $PWD/データ:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=パスワード \
  -d MySQL の

コマンドの説明:

  • -p 3306:3306 : コンテナのポート 3306 をホストのポート 3306 にマップします。
  • -v $PWD/conf:/etc/mysql/conf.d : ホストの現在のディレクトリにある conf/my.cnf をコンテナ内の /etc/mysql/my.cnf にマウントします。
  • -v $PWD/logs:/logs: ホストの現在のディレクトリの下の logs ディレクトリをコンテナの /logs にマウントします。
  • -v $PWD/data:/var/lib/mysql : ホストの現在のディレクトリの下のデータ ディレクトリをコンテナの /var/lib/mysql にマウントします。
  • -e MYSQL_ROOT_PASSWORD=your-password: ルート ユーザーのパスワードを初期化します。非常に複雑なパスワードを使用することをお勧めします。
  • -d mysql: デプロイするイメージ名。バージョン5.7の場合は、mysql:5.7になります。

リモート アクセスの構成

MySQL へのリモート アクセスは基本的な構成ですが、構成時にセキュリティの問題に注意する必要があります。そうしないと、特にエンタープライズ サーバーの場合、セキュリティ上のリスクが発生します。

また、ポート 3306 はサーバーのファイアウォールとサーバー プロバイダーのセキュリティ グループで有効にする必要があります。有効にしないと、アクセスできなくなります。

リモート アクセスを構成するには、まず MySQL 制御ターミナルを開き、次のコマンドを使用して開きます。

$ sudo docker exec -it mysql bash # MySQLコンテナに入る $ mysql -uroot -p # 実行後にMySQLにログインしてパスワードを入力する

$ use mysql; # mysqlデータベースの使用を選択

MySQL 8 の設定

'username'@'%' というユーザーを作成し、'password' で識別します。
# リモート アクセス用のアカウントを作成します。
# {usernama} はリモートアクセスログインのユーザー名です。root の使用は推奨されません。
# {password} はリモートアクセス用のログインパスワードです。
# '%' はすべての IP を表します。可能であれば、特定の IP または IP セグメントを設定してみてください。GRANT ALL ON *.* TO 'username'@'%';
# 以前に作成したアカウントにすべての権限を付与します ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
# このアカウントにログインするためにここでパスワードを使用することを確認します FLUSH PRIVILEGES;
# 権限の更新

完全なコマンドは次のとおりです。

'123456asd' によって識別されるユーザー 'james'@'%' を作成します。
# リモート アクセス用のアカウント (James) を作成します。

*.* のすべての権限を 'james'@'%' に付与します。
# 以前に作成したアカウント james にすべての権限を付与します

ALTER USER 'james'@'%' は '123456asd' によって mysql_native_password で識別されます。
# このアカウント {james} にログインするにはパスワード {123456asd} を使用することを確認します
# セキュリティを高めるために、パスワードはできるだけ複雑にしてください。

権限のフラッシュ;
# 権限の更新

設定後、Navicat またはその他のツールを使用して接続をテストします。

MySQL 5.7 の設定

GRANT OPTION を使用して、'password' で識別される 'username'@'%' に *.* のすべての権限を付与します。
# {usernama} はリモートアクセスログインのユーザー名です。root の使用は推奨されません。
# {password} はリモートアクセス用のログインパスワードです。
# '%' はすべての IP を表します。可能であれば、特定の IP または IP セグメントの FLUSH PRIVILEGES を設定してみてください。
# 権限の更新

設定後、Navicat またはその他のツールを使用して接続をテストします。

注意: アクセスできない場合は、ファイアウォールのポート 3306 が開いているかどうか、およびサーバー プロバイダーのセキュリティ グループ内のポートが開いているかどうかを確認してください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker に MySQL と Redis をインストールする方法
  • Docker で Tomcat、MySQL、Redis をインストールするための詳細な手順
  • DockerにMySQLをインストールする方法
  • Docker で MySQL をインストールし、リモート接続を実装するチュートリアル
  • DockerにMySQL 8.0をインストールする方法
  • Docker に MySQL と MariaDB をインストールする方法
  • Docker に共通コンポーネント (mysql、redis) をインストールする方法
  • DockerにMySQL8をインストールする方法
  • MySQL の Docker インストールと設定手順

<<:  JavaScript+html はフロントエンドページでランダム QR コード検証を実装します

>>:  MySQL 8.0.13 で日付を 0000-00-00 00:00:00 に設定すると発生する問題を解決する

推薦する

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます。以下の操作はすべて...

MySQLのマスタースレーブレプリケーションと読み取り書き込み分離を理解するための記事

目次導入1. MySQL マスタースレーブレプリケーション1. MySQLレプリケーションタイプ2....

Apache POIの基本的な使い方の詳しい説明

目次基本的な紹介入門テスト (Excel ファイルからのデータの読み取り)ステップ1: Maven座...

JavaScript配列についてさらに詳しく知るのに役立つ記事

目次1. 配列の役割: 2. 配列の定義: 1. コンストラクタを通じて配列を作成する2. リテラル...

Spring Boot 2.4 の新機能、ワンクリックビルド、Docker イメージプロセスの詳細説明

背景開発プロセス中に Docker コンテナ化をサポートするために、通常は Maven を使用してコ...

Node.js の非同期イテレータの詳細な説明

目次序文非同期イテレータとは何ですか?非同期イテレータストリームとしてページング機能を備えたAPIの...

MySQL並列レプリケーションの簡単な説明

1. 並列レプリケーションの背景まず、並列レプリケーションの概念はなぜ存在するのでしょうか? 1. ...

CSS における XHTML タグの対応する属性と使用法

XHTML CSS を使って Web ページをデザインし始めた頃は、タグの使用経験も少なく、あまり気...

フォームから Vue ElementUI を使用してログイン効果を実装する例

目次1. ElementUIで基本的なスタイルを構築する2. [送信]ボタンをクリックして、アカウン...

スネークゲームのウェブ版を実装するためのJavaScript

この記事では、ウェブページのスネークゲームを実装するためのJavaScriptの具体的なコードを参考...

Nofollowタグの書き方と使い方

「nofollow」タグは数年前に Google、Yahoo、Microsoft によって提案されま...

Linux パーティションまたは論理ボリュームにファイルシステムを作成する方法

序文システムにファイル システムを作成し、それを永続的または非永続的にマウントする方法を学習します。...

ウォーターフォールフローレイアウトを実装する3つの方法

序文今日、Xianyuを閲覧していたとき、各行の高さが同じではないことに気付きました。調べてみると、...

Vueでクラススタイルを使用する方法の詳細

目次1. ブール2. 表現3. マルチクラスパッケージ4. v-bind でクラス class を直...

他の人が私のウェブページを保存したり、サイトをコピーしたりするのを防ぐためのヒント

現在、インターネット上でウェブサイトをコピーすることは非常に一般的です。では、他人が私たちのウェブサ...