Docker Hub MySQL中给了一个例子,说是可以在启动容器的时候指定字符集:
$ docker run \
--name some-mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d mysql:tag \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
复制这个命令实际启动了一个容器,进去后看了下字符集好像没有变化:
$ show variables like '%char%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)
有大佬知道这是为什么吗?
自定义配置文件可以实现。
在宿主机新建一个配置文件,文件名随意,后缀须为
.cnf
:拷贝以下内容粘贴至文件:
保存并退出。
然后启动时将容器的
/etc/mysql/conf.d
挂载到该文件所在目录:启动后进入容器登录
MySQL
:可以看到字符集已正确设置。
MySQL - 设置字符集