1. 安裝docker
查看這篇文章的前半部分即可:
虛擬機上安裝docker,并安裝flink鏡像
2. 安裝mysql 5.7
2.1 下載mysql鏡像
可以使用docker search mysql命令查看遠程鏡像倉庫中的鏡像信息,或者訪問dockerhub去找需要的鏡像
這里直接拉取鏡像:
docker pull mysql:5.7
2.2 安裝mysql鏡像
docker run -d -p 3306:3306 --privileged=true \
-v /amos/mysql/log:/var/log/mysql \
-v /amos/mysql/data:/var/lib/mysql \
-v /amos/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=goodme \
--name mysql \
mysql:5.7
說明:上面三個-v分別掛載了三個本地卷,分別對應容器內的日志目錄,data目錄,和配置目錄
初始密碼是MYSQL_ROOT_PASSWORD對應的值,容器名字為mysql
2.3 進入容器并查看數據庫參數信息
用docker ps命令查看mysql容器是否啟動
[root@localhost conf]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c16d0f3a9c0 mysql:5.7 "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
進入容器
docker exec -it 3c16d0f3a9c0 bash
在容器中執行命令,myql -uroot -p
bash-4.2# mysql -uroot -p
需要的密碼是步驟2.2中的MYSQL_ROOT_PASSWORD對應的密碼
執行如下命令show variables like ‘character%’;,查看字符集相關參數:
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
需要將latin1相關的選項改成utf8,這些latin1的選項會導致中文亂碼
需要特別注意的是:不要通過sqlyog或者其他數據庫連接工具來執行show variables like ‘character%’,應為這些數據庫連接客戶端的查詢結果可能和在數據庫中直接查看的結果不一樣。
2.4 解決中文亂碼問題
在外部掛載的配置文件目錄中添加配置文件,我用的外部掛載目錄是
/amos/mysql/conf
在該文件下vi新建個配置文件,my.cnf, 寫入如下內容
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
重啟mysql容器
docker restart 3c16d0f3a9c0
一定要注意:配置只會對新建的數據庫和表生效
3. 查看字符集的配置是否成功
[root@localhost conf]# docker exec -it 3c16d0f3a9c0 bash
bash-4.2# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.44 MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
都變成了utf8,搞定,gagaga!