1. 拉取鏡像
docker pull mysql:latest
2. 建立相關(guān)目錄
建立配置、數(shù)據(jù)、日志目錄
mkdir -p /mysql_test/mysql/config
mkdir -p /mysql_test/mysql/data
mkdir -p /mysql_test/mysql/log
修改log目錄的所屬用戶,其實(shí)data也是要改的,但是data會(huì)自動(dòng)改。
cd /mysql_test/mysql
sudo chown 999 log
3. 建立配置文件
cd /mysql_test/mysql/config
vim my.cnf
my.cnf內(nèi)容,這里只配了個(gè)錯(cuò)誤日志路徑
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
log-error=/var/log/mysql/error.log
4. 建個(gè)密碼配置文件,為了docker啟動(dòng)腳本中不出現(xiàn)密碼明文
mkdir -p /mysql_test/mysql/config/secrets
echo "1234567" > /mysql_test/mysql/config/secrets/password
5. 編寫啟動(dòng)腳本
vim run_mysql_test2.sh
腳本內(nèi)容
docker run --name mysql_test2 \
-h mysql_test2 \
-p 0.0.0.0:4000:3306 \
-v /mysql_test/mysql/config:/etc/mysql/conf.d \
-v /mysql_test/mysql/data:/var/lib/mysql \
-v /mysql_test/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD_FILE=/etc/mysql/conf.d/secrets/password \
--restart=always \
-d mysql:latest \
腳本解讀
--name mysql_test2 # 容器名
-h mysql_test2 # 容器host名
-p 0.0.0.0:4000:3306 # 端口映射
-v /mysql_test/mysql/config:/etc/mysql/conf.d # 配置文件目錄映射
-v /mysql_test/mysql/data:/var/lib/mysql # 數(shù)據(jù)目錄映射
-v /mysql_test/mysql/log:/var/log/mysql # 日志目錄映射
-e MYSQL_ROOT_PASSWORD_FILE=/etc/mysql/conf.d/secrets/password # 指定root密碼文件
--restart=always # 隨docker啟動(dòng)
-d mysql:latest # 后臺(tái)啟動(dòng)mysql:latest
6. 啟動(dòng)容器
sh run_mysql_test2.sh
7.連接數(shù)據(jù)庫
這里使用的是Navicat工具,Navicat安裝可以參考https://www.bilibili.com/read/cv17235251
新建mysql鏈接,填入連接名、地址、端口、用戶名、密碼

image.png
測(cè)試連接,顯示連接成功就ok了

image.png