【Docker+Mysql】docker搭建的mysql8.0中文乱码问题

环境

  • CentOS 7
  • mysql
  • docker

问题描述

查询数据库时,发现服务器端数据出现中文乱码问题,所有中文显示成问号(??),导致我的接口访问使用从数据库中读取出来的数据无法处理。
在这里插入图片描述

解决过程

使用Docker搭建mysql容器,和不使用Docker部署mysql数据库,解决中文乱码问题有点不一样。使用Docker部署mysql,如果出现中文乱码问题,要找到mysql所在容器里的配置文件,修改配置文件。

CentOS7 安装Docker + Docker部署mysql过程:
https://blog.csdn.net/weixin_42956047/article/details/103810144

进入mysql容器:

 docker exec -it 容器名/bin/bash   //进入容器
 如:
 docker exec -it image_mysql /bin/bash   //进入容器

连接mysql:使用一下命令,输入root用户的密码后,mysql连接成功。

mysql -u root -p

查看当前数据库字符集:

SHOW VARIABLES LIKE 'character_set_%';//查看数据库字符集

在这里插入图片描述

 SHOW VARIABLES LIKE 'collation_%';

在这里插入图片描述
图上的第一个 connection 就是我们通过workbench等客户端连接的时候指定的编码。
外部访问数据乱码的问题就出在这个connection连接层上。

注意: 如果连接mysql后,修改这些变量的值为“utf8”,当重新来连接mysql后,再次查看当前的值,这些值又被重置为上图编码格式了,不能从根本上解决问题。

修改mysql的配置文件

先进去mysql容器。
注意:不输入 mysql -u root -p(即登录数据库)

配置文件在etc/mysql/myconf.d/my.cnf(文件名可能是mysql.cnf)
在这里插入图片描述
编辑配置文件:vi mysql.cnf,在使用docker容器时键入vim命令时提示:
在这里插入图片描述
在容器中安装vim:
在这里插入图片描述
在vim命令可用后,在文件中添加以下代码:

[mysql]
default-character-set = utf8

[mysql.server]
default-character-set = utf8

[mysql_safe]
default-character-set = utf8

[client]
default-character-set = utf8

#在标签下添加以下设置
[mysqld]
default-character-set = utf8
character_set_server = utf8

保存并退出。

连接mysql后,检查mysql字符集编码,看看是否变化:
在这里插入图片描述
在这里插入图片描述
验证数据库里面的中文字段是否还乱码(出现??):
在这里插入图片描述
参考:https://blog.csdn.net/qq_35765928/article/details/87880291

发布了115 篇原创文章 · 获赞 22 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_42956047/article/details/103810445