docker中的mysql有中文显示问题跟大小写区分问题?

发布于:2025-08-30 ⋅ 阅读:(11) ⋅ 点赞:(0)

华侨大学部署任务记录:

先查看mysql 在docker中的映射路径

用docker inspect prod-mysql

推荐方案:在 conf.d/ 目录中创建配置文件

bash

# 进入配置目录
cd /data/docker-data/mysql/conf

# 在 conf.d 目录中创建自定义配置文件
cat << EOF > conf.d/custom.cnf
[mysqld]
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
EOF

或者:在 mysql.conf.d/ 目录中创建

bash

# 在 mysql.conf.d 目录中创建配置文件
cat << EOF > mysql.conf.d/mysql.cnf
[mysqld]
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
EOF

查看现有的配置文件内容(推荐先检查)

bash

# 查看 conf.d 目录中是否有现有配置
ls -la conf.d/

# 查看 mysql.conf.d 目录中的文件
ls -la mysql.conf.d/

# 如果有现有文件,先查看内容
cat conf.d/*.cnf 2>/dev/null
cat mysql.conf.d/*.cnf 2>/dev/null

重启 MySQL 容器

bash

# 重启容器使配置生效
docker restart your_mysql_container_name

# 查看日志确认没有错误
docker logs your_mysql_container_name

验证配置是否加载

bash

# 进入容器查看配置文件
docker exec -it your_mysql_container_name bash
ls -la /etc/mysql/conf.d/
ls -la /etc/mysql/mysql.conf.d/

# 登录 MySQL 验证设置
mysql -u root -p -e "SHOW VARIABLES LIKE 'lower_case_table_names';"
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set%';"

如果遇到配置冲突

如果两个目录都有配置文件,MySQL 会按字母顺序加载。建议:

  1. 统一使用一个目录(推荐 conf.d

  2. 检查现有配置避免冲突

  3. 文件名按字母顺序,如 z-custom.cnf 确保最后加载

创建配置文件的完整步骤

bash

# 1. 进入配置目录
cd /data/docker-data/mysql/conf

# 2. 在 conf.d 中创建配置文件(推荐)
echo '[mysqld]
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4' > conf.d/custom.cnf

# 3. 查看创建的文件
cat conf.d/custom.cnf

# 4. 重启容器
docker restart your_mysql_container_name

# 5. 验证配置
docker exec your_mysql_container_name mysql -u root -p -e "SHOW VARIABLES LIKE 'lower_case_table_names';"

重要提醒 ⚠️

如果 MySQL 容器中已有数据,修改 lower_case_table_names 需要:

  1. 备份数据

  2. 清空数据目录 (/data/docker-data/mysql/data)

  3. 重新初始化

否则可能会出现表名识别问题。

选择在 conf.d/ 目录中创建配置文件是最安全的方式,因为这是 MySQL 的标准配置目录。


网站公告

今日签到

点亮在社区的每一天
去签到