docker运行mysql的乱码问题解决
本人用docker跑mysql8的镜像,没有挂载配置文件
数据卷的时候会出现中文无法在数据库中显示的问题,困扰了挺久的,记录一下解决过程,一劳永逸解决中文乱码/不显示问题
一. 将my.cnf放在数据卷对应的地方
- 解决这个问题用到配置文件中的这些内容,直接粘进去保存为
my.cnf
就可以解决这个问题
[client]
default_character_set = utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
二. 启动或编排docker-compose的时候配置数据卷
- docker-compose中的mysql配置
volumes
- 注意最好在docker-compose up之前就在对应的文件夹中放好my.cnf,否则会自动创建一个my.cnf文件夹
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'lskxweb'
ports:
- "3306:3306"
privileged: true
volumes:
- /app/mysql/db:/var/lib/mysql
- /app/mysql/conf/my.cnf:/etc/my.cnf
- /app/mysql/conf/logs:/logs
- /app/mysql/init:/docker-entrypoint-initdb.d
networks:
- red-ghost-network
command: --default-authentication-plugin=mysql_native_password
三. 进入mysql中查看编码
docker exec -it mysql容器id /bin/bash
mysql -u 用户名 -p
- 进入之后用这个命令查看字符编码
SHOW VARIABLES LIKE 'character%';
- 都是utf8就成功了,如果有几个是拉丁的就是没配置成功