【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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值