在使用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/
重启即可。