个人随笔
目录
Docker安装mysql5.7中文保存乱码的解决方案
2020-09-09 22:28:55

我们再用docker安装好mysql容器后,保存中文会全部变成?号,那时因为在docker上部署mysql时,mysql的默认字符集是latin1,这样如果日后有中文会出现异常,不能存储等,因为latin1是不支持中文的。安装方法参考docker-6-docker快速安裝MySQL,下面公布下我的解决方案。

将之前的容器删除

  1. docker stop mysql3308
  2. docker rm mysql3308

创建配置文件挂载点

  1. mkdir -p /data/mysql/mysql.conf.d

在该挂载点创建配置文件mysqld.cnf,也就是最后面加上如下内容

  1. [client]
  2. default-character-set=utf8
  3. [mysql]
  4. default-character-set=utf8

这里,网上的都是启动容器后直接进入容器中修改/etc/mysql/mysql.conf.d/mysqld.cnf这个文件,然后就要安装vim什么的,我觉得太麻烦了,就直接挂载出来即可。所有内容如下,只需要拷贝进去即可。

  1. # Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  2. #
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; version 2 of the License.
  6. #
  7. # This program is distributed in the hope that it will be useful,
  8. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. # GNU General Public License for more details.
  11. #
  12. # You should have received a copy of the GNU General Public License
  13. # along with this program; if not, write to the Free Software
  14. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  15. #
  16. # The MySQL Server configuration file.
  17. #
  18. # For explanations see
  19. # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
  20. [mysqld]
  21. pid-file = /var/run/mysqld/mysqld.pid
  22. socket = /var/run/mysqld/mysqld.sock
  23. datadir = /var/lib/mysql
  24. #log-error = /var/log/mysql/error.log
  25. # By default we only accept connections from localhost
  26. #bind-address = 127.0.0.1
  27. # Disabling symbolic-links is recommended to prevent assorted security risks
  28. symbolic-links=0
  29. [client]
  30. default-character-set=utf8
  31. [mysql]
  32. default-character-set=utf8

创建容器

执行下面的语句创建容器即可,这里指定了名称为mysql3308,宿主机端口为3308,数据和配置文件的挂载,数据是为了以后备份,所以也挂载出来,并且我还担心容器不小心被删除了然后数据也不见了,所以这里挂载出来比较好。然后还设置了编码。

  1. docker create --name mysql3308 -v /data/mysql/data:/var/lib/mysql -v /data/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

挂载用-v,密码设置用-e,这里是123456。

启动容器,完成

  1. docker start mysql3308

总结

启动安装是很简单的,但是我们要记住,数据和配置文件要挂载,并且编码格式要为utf-8,顺便说一句,我这里用mysql5.7的原因就是为了,引擎Innodb的全文索引和中文分词。顺便列一些docker的简单命令

  1. docker stop mysql3308 #停止容器
  2. docker start mysql3308 #启动容器
  3. docker ps
  4. docker ps -a
  5. docker images
  6. docker rm 容器ID或者民称
  7. docekr rmi _镜像ID
 739

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2