一、前言

部署到服务器的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%';

image-20210902220130528

可以看到character_set_database = latin1character_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

image-20210902220208742

客户端的中文也显示正常了。