一. 版本
CentOS:7.6
Docker:19.03
MySQL:5.7
二. 下載並安裝
1. 拉取MySQL鏡像:
docker pull mysql:5.7
2. 創建MySQL在宿主機對應的目錄映射:
mkdir -p /usr/local/mysql/{logs,data}
3. 安裝MySQL:
// 切換到宿主機的mysql目錄
cd /usr/local/mysql // 創建mysql容器
docker run -p 3306:3306 --name my_mysql \ -v $PWD/logs:/var/log/mysql \ -v $PWD/data:/var/lib/mysql \ --restart=always --privileged=true \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
// 命令解釋 // docker run :是docker創建容器命令 // -p 宿主機端口:容器端口 :端口映射 // --name 容器名 :自定義容器名 // -v 宿主機目錄:容器目錄 :目錄映射 // 在這里目錄映射了mysql容器中的日志、數據庫文件 // --restart=always :docker啟動時自啟動該容器 // --privileged=true :獲取容器真實root權限 // -e MYSQL_ROOT_PASSWORD :設置mysql root賬戶初始密碼 // -d 鏡像:版本 :選擇要創建容器的鏡像,並在后台運行
4. 注意:
(1) 查看生成的mysql容器的時候,端口映射會出現一個33060的端口,這是MySQL的MySQL Shell操作所需要的X協議端口,屬於必備端口。
(2) 不要映射 /etc/mysql 配置文件目錄,會把鏡像默認的配置文件夾替換為空文件夾。
三. 配置MySQL容器
1. 進入mysql容器:
docker exec -it my_mysql /bin/bash
2. 編輯配置文件以前需要更新關聯並下載文本編輯器:
// 設置容器時間為當前時間,有的容器可能不准導致容器更新關聯失敗
date -s "當前時間"
// 示例:date -s "20200926 21:07:00" #yyyymmdd hh:mm:ss // 更新關聯,因為默認服務器不在國內,所以速度慢的驚人
apt-get update // 安裝文本編輯器nano
apt-get install nano
3. 編輯
// 安裝好nano后,跳轉到mysql容器自動生成的配置文件目錄下
cd /etc/mysql // 打開配置文件my.cnf
nano my.cnf // 在文件末尾添加以下字段,此時我默認編碼格式為utf8,如果用GBK自己改即可
[mysql] default-character-set=utf8mb4 [mysqld] character_set_server=utf8mb4 init_connect='SET NAMES utf8' lower_case_table_names = 1// 保存配置文件,並使用exit命令退出mysql容器
4. 重啟mysql容器:
docker restart my_mysql
5. 查看配置文件是否生效
// 重新進入mysql容器中
docker exec -it my_mysql /bin/bash // 登陸mysql客戶端
mysql -uroot -p123456 // 依次執行命令
show variables like 'character_set%'; show variables like 'collation%';