插件窝 干货文章 Docker run 如何指定 MySQL 字符集?

Docker run 如何指定 MySQL 字符集?

MySQL 字符集 配置 utf 785    来源:    2025-04-01

在 Docker 中运行 MySQL 并指定字符集

要在 Docker 中运行 MySQL 并指定字符集,你可以通过以下几种方式实现:

方法一:使用环境变量

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=mydb \
-e MYSQL_CHARSET=utf8mb4 \
-e MYSQL_COLLATION=utf8mb4_unicode_ci \
-d mysql:tag

方法二:使用配置文件

  1. 首先创建一个自定义的 MySQL 配置文件 my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
  1. 然后运行容器时挂载这个配置文件:
docker run --name some-mysql -v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf \
-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

方法三:使用命令行参数

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

常用字符集选项

  • utf8mb4: 支持完整的 Unicode 字符集(包括表情符号)
  • utf8: 基本 Unicode 支持(MySQL 中的 utf8 实际上是 UTF-8 的子集)
  • latin1: 西欧字符集

验证字符集设置

容器运行后,你可以进入容器并验证字符集设置:

docker exec -it some-mysql mysql -uroot -pmy-secret-pw -e "SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';"

注意事项

  1. 对于生产环境,建议使用配置文件方式,因为它更易于管理和维护
  2. 如果你需要持久化数据,记得添加 -v /my/own/datadir:/var/lib/mysql 参数
  3. 不同版本的 MySQL 镜像可能有略微不同的配置方式,请参考对应版本的官方文档

希望这些信息能帮助你正确配置 MySQL 容器的字符集!