问题描述
Docker安装MySQL,没有什么问题,基本操作,导入sql文件,也没有什么问题。使用sql语句查询,没有什么问题。然后,启动我的springboot项目,查询出来就是中文乱码。解决办法,修改mysql编码格式,使用utf8,再删除自己创建的database,重新建一个。
解决过程
下载mysql镜像,应该没有什么问题,如图所示,我下载的是5.7.29版本的mysql
然后如下命令,启动一个mysql容器:
docker run -itd --name mysql-test -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.29
如此我们就创建了一个名字叫做mysql-test的容器,。关于命令,在菜鸟教程里有命令大全,解释很详细。
执行docker ps
命令,我们会看到,自己创建的mysql容器
执行如下命令,进入我们的mysql容器当中:
docker exec -it mysql-test /bin/bash
这里使用名字或者ID都可以进入容器里。如图所示:
使用ls
命令,会发现,这有很多文件夹,跟我们的linux根目录似的,但是,它只是在docker的一个容器里,并不是我们的本机。在这里直接使用我们的mysql命令就可以进入mysql。
如此是不是就很熟悉了。查看数据库编码方式,发现全都是默认的latin1。为了避免出现中文乱码,我们就把它改为utf8。
改编码我也是查看了很多博客,有的博客对于改配置文件的方式,路径都说的不对,我也是瞎搞一通,连容器都启动不起来了。还好经过我的不断尝试,给改好了。set names utf8
命令就不说了,基本上所有的博客都有这个步骤。我们执行完这个命令之后,就退出mysql,改它的配置文件。
在容器里进入 /etc/mysql/mysql.conf.d
目录中,这里有一个mysql.cnf文件,修改它就完事。
如上图所示,我们第一次使用vim会提示没有这个命令,因为这是一个与外界无关的,独立的容器,所以我们需要安装这个vim。用下边这两条命令:
$ apt-get update
$ apt-get install vim
更新一下软件源,然后下载vim。
这个可能要等上一会,下载完成,我们就编辑这个mysqld.cnf文件。文件长这个样子:
接下来我们就写入几行代码
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server = utf8
如图所示,修改完,文件长这个样子:
这样我们就修改完成了。只需要重启容器就可以了。Ctrl+d
退出容器,来到我们的本机,执行docker restart mysql-test
命令,就可以重启我们的容器,再进入容器就可以看到我们的编码全部改为utf8了。
这样一来,我们再创建数据库,操作数据库,基本上就不会出现中文乱码了。