docker容器 MySQL不显示中文

在使用 Docker 容器运行 MySQL 数据库时,有时会遇到中文字符无法正常显示的问题。这个问题可能是由于容器中的 MySQL 默认字符集设置不正确所导致的。本文将介绍如何解决 MySQL 容器中不显示中文的问题,并提供相关代码示例。

问题描述

当我们在 Docker 容器中运行 MySQL 数据库时,如果插入或读取包含中文字符的数据,可能会发现中文字符显示为乱码或者无法正常显示。这是由于 MySQL 默认的字符集设置为 latin1,而 latin1 不支持中文字符。

解决方法

为了解决 MySQL 容器中不显示中文的问题,我们需要修改 MySQL 配置来使用支持中文字符的字符集,例如 utf8mb4

步骤1:创建自定义 MySQL 配置文件

首先,我们需要创建一个自定义的 MySQL 配置文件,用于设置正确的字符集。创建一个名为 my.cnf 的文件,并添加以下内容:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

上述配置将 MySQL 的字符集设置为 utf8mb4,并使用 utf8mb4_unicode_ci 作为默认的字符集校对规则。

步骤2:创建 MySQL 容器

接下来,我们需要使用自定义的配置文件创建一个 MySQL 容器。可以使用以下命令来创建一个带有自定义配置文件的 MySQL 容器:

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=yourpassword -v /path/to/my.cnf:/etc/mysql/my.cnf -d mysql:latest

上述命令中,我们使用 -v 参数将自定义的 my.cnf 配置文件挂载到容器的 /etc/mysql/my.cnf 路径下。这将使 MySQL 读取我们定义的配置文件。

步骤3:进入 MySQL 容器并修改字符集

现在,我们需要进入 MySQL 容器并执行一些命令来修改字符集设置。使用以下命令进入 MySQL 容器的交互式终端:

docker exec -it mysql-container mysql -uroot -p

上述命令将打开 MySQL 容器的 MySQL 命令行界面。

在 MySQL 命令行界面下,执行以下命令来修改 MySQL 的默认字符集:

ALTER DATABASE `your_database_name` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

your_database_name 替换为你想要修改的数据库名称。

步骤4:重启 MySQL 容器

最后,我们需要重启 MySQL 容器以使修改生效。使用以下命令重启容器:

docker restart mysql-container

现在,你的 MySQL 容器应该已经正确配置了字符集,并且可以正常显示中文字符了。

总结

通过修改 MySQL 容器的配置文件和字符集设置,我们可以解决 Docker 容器中 MySQL 不显示中文的问题。在修改配置文件后,确保重启容器以使修改生效。

希望本文能够帮助你解决 MySQL 容器中不显示中文的问题。如有任何疑问或困惑,请随时留言。

pie
    title MySQL字符集配置
    "latin1" : 25
    "utf8mb4" : 75

参考链接:

  • [MySQL Character Set Configuration](