docker中的mysql有中文显示问题跟大小写区分问题?
华侨大学部署任务记录:
先查看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 会按字母顺序加载。建议:
统一使用一个目录(推荐
conf.d
)检查现有配置避免冲突
文件名按字母顺序,如
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
需要:
备份数据
清空数据目录 (
/data/docker-data/mysql/data
)重新初始化
否则可能会出现表名识别问题。
选择在 conf.d/
目录中创建配置文件是最安全的方式,因为这是 MySQL 的标准配置目录。