一、前言
部署到服务器的Mysql数据库,中文数据返回到前端都是问号乱码。需要通过修改mysql配置文件,将编码格式改成utf8来解决这个问题。mysql是安装在docker容器中的,操作如下:
二、查看mysql编码
1、查看当前所有的容器
sudo docker ps -a
2、找到docker中的mysql容器ID
根据第一步,找到postgresql的容器idCONTAINER ID
,比方是a3a3a3a3
3、进入容器
sudo docker exec -it a3a3a3a3 bash
4、进入mysql,查看编码
登录mysql,mysql -u用户名 -p密码
查看mysql的编码:
show variables like '%char%';
可以看到character_set_database = latin1
和character_set_server = latin1
,需要将这个改成utf8
。
输入exit
退出mysql。
三、修改mysql配置文件mysql.cnf
将mysql.cnf文件拷贝到服务器某个文件夹下:
sudo docker cp a3a3a3a3:/etc/mysql/mysql.cnf /apps/omp/
进入文件夹后,编辑文件:
sudo vi mysql.cnf
添加以下内容到配置文件:
1 | [mysql] |
2 | default-character-set=utf8 |
3 | |
4 | [mysqld] |
5 | collation-server = utf8_unicode_ci |
6 | init-connect='SET NAMES utf8' |
7 | character-set-server = utf8 |
8 | |
9 | [client] |
10 | default-character-set=utf8 |
将文件覆盖回去:
sudo docker cp /apps/omp/mysql.cnf a3a3a3a3:/etc/mysql/
四、重启容器
重启容器:
sudo docker restart a3a3a3a3
再次查看mysql编码,已修改成utf8
客户端的中文也显示正常了。