Docker中的mysql乱码问题解决

标签:

本文出自jvm123.com-java技术分享站:http://jvm123.com/2019/10/docker-zhong-de.html

在使用docker的mysql时,存入的中文字符全部变成了问号,这是由于mysql服务的默认编码并不支持中文的汉字。可以在以下过程中设置mysql的编码方式:

windows 上 mysql 编码

windows上,在安装mysql时,有选择编码方式的步骤,可以直接选utf-8。如果在安装的时候没有注意这个选项,可以找到mysql的配置文件(mysql.ini或者my.ini),修改其中的的如下几句重启服务即可:

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

linux和docker 上 mysql 乱码

linux或者docker上,找到 mysql.ini或者my.ini 修改,然后重启服务肯定可以解决问题,但是,在docker中,官方镜像说明已经提供了配置编码的方法。旨在不修改原有的配置文件,如下:

docker容器挂载自定义的配置文件

使用如下的命令启动容器,并挂载配置文件:

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

在自己的文件夹中自定义一个 mysql.cnf ,如上文所说,配置编码即可,这个配置会优先于my.ini中的配置。

docker容器的启动参数中设置

使用如下命令启动容器即可设置编码参数:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

覆盖docker容器中的配置文件设置编码

就是自己新建mysql.cnf文件,并写好编码的配置,将它复制到容器内部,使用如下命令:

docker cp mysql.cnf docker-mysql:/etc/mysql/conf.d/

重启即可。

发表评论