点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情)
1 はじめに
docker を使用して mysql をインストールするのは良い解決策ではありませんが、個人使用の便宜上、mysql のインストールに docker を使用しても問題はありません。
また、ホスト ファイルはインストール中にコンテナにマウントされるため、mysql の永続性が確保され、開発やテストにも非常に適しています。
2. Docker に MySQL サービスをインストールする
以下では mysql5.7 バージョンを例に説明しますが、mysql8.0 の場合も手順は同じです。
2.1. 利用可能な MySQL バージョンを表示する
# 搜索镜像
docker search mysql
2.2. MySQL イメージをプルする
# 拉取镜像
docker pull mysql:5.7
# 或者
docker pull mysql:latest
2.3. ローカルミラーを表示する
次のコマンドを使用して、mysql イメージがインストールされているかどうかを確認します。
docker images
2.4. コンテナの実行
MySQL は一般的に使用されるリレーショナル データベースです。一般的に、データを永続的に保存できることが望まれます。コンテナーを削除しても、データは削除されません。このとき、ホスト フォルダーをコンテナーにマウントする必要があります。これにより、コンテナが削除された後でも、新しく作成された MySQL コンテナが以前のデータを使用できることを確認します。
- 最初にローカルディレクトリを準備します
mkdir -p /mydata/mysql/log
mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/conf
- ディレクトリをマウントしてコンテナを起動します
# Docker启动MySQL容器
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
-p 3306:3306
: ホストポートとコンテナポート間のマッピング関係を指定します
-v
:ホストフォルダーを/mydata/mysql/data
コンテナーの/var/lib/mysq
マウントポイントにマウントします
-e
:コンテナに必要な変数を指定します
-it
: 対話型端末を表します。
-d
:バックグラウンドでmysqlコンテナを実行します。
2.5. 実行中のコンテナの表示
# 查看正在运行的容器
docker ps
# 查看所有的docker容器
docker ps -a
このとき、up ステータスが表示されていれば起動成功です。再起動している場合は、何か問題があります。ログを表示できます。
docker logs -f mysql
2.6. コンテナ内部の表示
docker exec -it mysql /bin/bash
2.7. root リモートログインを許可する
- コンテナに入る
docker exec -it mysql /bin/bash
- mysqlにログイン
mysql -uroot -p
- ユーザーとプラグインを表示する
mysql> use mysql;
Database changed
mysql> select host,user,plugin from user;
+-----------+---------------+-----------------------+
| host | user | plugin |
+-----------+---------------+-----------------------+
| localhost | root | mysql_native_password |
| localhost | mysql.session | mysql_native_password |
| localhost | mysql.sys | mysql_native_password |
| % | root | mysql_native_password |
+-----------+---------------+-----------------------+
4 rows in set (0.00 sec)
mysql>
結果を確認すると、root@'localhost'
それが見えただけでなくroot@'%'
、root@'%'
リモート ログインを許可するアカウントが予想した結果と異なることもわかりました。mysql の docker イメージは非常に良心的であるとしか言えません。docker がより優れていることはわかっています開発とテストに使用されます。root リモート ログインを工場出荷時の設定に直接設定します。
- やめてください
2.8. ホスト上のコンテナ内の MySQL に接続する
# 用命令行测试端口连通性
telnet localhost 3306
# 查看能不能连接上MySQL
mysql -u root -P 3306 -h 127.0.0.1 -proot
# 查看容器日志
docker logs -f mysql
2.9. Navicat を使用してコンテナの MySQL に接続する
- 接続パラメータを構成する
- 接続済み
3. MySQL8.0の場合は、次の実行が必要になる場合があります。
mysql の docker イメージは非常に使いやすいと言わざるを得ません。デフォルトの実稼働設定はセキュリティ制限を解除するのに役立つだけでなく、root がリモートでログインして「いいね!」を受け取ることもできます。したがって、このステップでは実際に何もする必要はありません。質問がある場合は、次のステップに進んでください。
注: mysql の Docker インストールは通常、開発とテストに使用されるため、デフォルトの工場出荷時の設定はユーザーがいくつかの設定を行うのに役立ちます。ただし、Linux にインストールされた mysql8.0 には、デフォルトでいくつかのセキュリティ制限と root リモート ログインに対する制限があります。
3.1. root リモートログインを許可する
- mysqlコンテナに入ります
docker exec -it mysql /bin/bash
- mysqlにログイン
mysql -uroot -p
mysql> use mysql
Database changed
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
mysql>
工場出荷前にアカウントが作成されたことがわかりますroot@'%'
。そうでない場合は、自分で作成してください
- root@'%' アカウントを作成する
mysql> create user root@'%' identified by 'root';
Query OK, 0 rows affected (0.01 sec)
mysql>
- root@'%' アカウントにすべての権限を付与します。
mysql> grant all on *.* to root@'%';
Query OK, 0 rows affected (0.00 sec)
mysql>
3.2. パスワード強度制限の解除
- 「パスワードの確認」コンポーネントをアンインストールします。
mysql> UNINSTALL COMPONENT 'file://component_validate_password';
ERROR 3537 (HY000): Component specified by URN 'file://component_validate_password' to unload has not been loaded before.
mysql>
Docker の mysql イメージはデフォルトではインストールされません
- 「パスワード認証」プラグインをアンインストールする
mysql> UNINSTALL PLUGIN validate_password;
ERROR 1305 (42000): PLUGIN validate_password does not exist
mysql>
Docker の mysql イメージはデフォルトではインストールされません