最近在学习mysql时,在windows中掌握datagrip后,尝试在linux中使用mysql,为了使用方便,在docker中获取mysql镜像,创建容器来使用。
在建表时发现mysql中输入中文不显示,猜测原因可能在如下三个方面:
- finalshell
- docker
- mysql
逐一检查设置:
- 查看finalshell的字符集设置,没有问题
关于finalshell连接虚拟机的使用,以及修改字符集的设置,参考:finalshell使用教程(2023…9.07更新中文乱码解决) - 修改mysql的字符集设置,无效
- 修改容器:
在这里首先根据尚硅谷docker教程,发现常规创建的容器中字符集不是utf8,因此希望通过在创建容器时设置容器卷,将容器的文件挂载到主机目录中,新建my.cnf文件,通过容器卷同步给mysql容器实例,以此解决中文乱码问题。
经尝试发现无效,查找原因发现:
在主机目录中并未找到映射的容器卷目录:
猜测是用户权限问题,后发现已经将docker添加到root用户权限中,排除。
后来将挂载目录设置到主文件目录中,而不是根目录,仍然无效。
后在finalshell中将普通用户$更改为root用户#,在主文件目录中设置挂载目录,成功。
之后编写my.cnf文件,仍无效。
后找到一篇笔记,通过在进入容器时进行设置,可以指定容器的字符集:
docker exec -it mysql env LANG=C.UTF-8 /bin/bash