问题:查看mysql数据中文显示乱码

docker 下MySQL数据库数据中文显示乱码问题解决

解决办法:进入容器后查看数据库编码格式后发现默认编码格式为瑞典latin1 , 修改配置文件将其改为utf-8即可;

步骤:

1:执行命令进入容器:

docker exec -it 【容器id或名称】 sh

docker 下MySQL数据库数据中文显示乱码问题解决

2:登录数据库:

mysql -u【账号】 -p【密码】

docker 下MySQL数据库数据中文显示乱码问题解决

3:查看外部连接层编码:

SHOW VARIABLES LIKE 'collation_%';

docker 下MySQL数据库数据中文显示乱码问题解决

4:查看数据库字符集:

SHOW VARIABLES LIKE 'character_set_%';

docker 下MySQL数据库数据中文显示乱码问题解决

发现了客户端与连接默认都是latin1;

5:先解决外部访问乱码问题:

SET NAMES 'utf8';

他实际上这一句话是设置了三个值:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

当我们执行完以后步骤后还不够 , 我们还需要修改一个mysql的配置文件:

6:我们重新进入容器内部 ,但不登陆数据库,也就是到这一步:

docker 下MySQL数据库数据中文显示乱码问题解决

从上图可以看到, 我们的容器内部有bin , boot , dev的文件夹;

7.我们cd到etc/mysql/mysql.conf.d下

docker 下MySQL数据库数据中文显示乱码问题解决

我们可以看到有一个叫做mysqld.cnf的文件,使用vim命令修改它 , 但可能有人需要在容器内安装vim命令,所以先试一下有没有安装vim,如果有跳过第8步, 如果没有(vim时提示vim: command not found)的话需要执行第8步;

8:执行:

apt-get update

更新完毕后执行:

apt-get install vim

9:安装完成后

vim mysqld.cnf

进入文件:

docker 下MySQL数据库数据中文显示乱码问题解决

我的文件刚进去的时候只有

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql

需要改为

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
default-character-set = utf8

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

直接复制即可,改完后esc + :wq 保存并退出

执行登陆命令进入mysql中查看编码:

docker 下MySQL数据库数据中文显示乱码问题解决

docker 下MySQL数据库数据中文显示乱码问题解决

查看数据:

docker 下MySQL数据库数据中文显示乱码问题解决

解决.

 

相关文章: