解决docker中mysql执行sql脚本数据库乱码问题(无需重新构建容器)

1. 原因

docker中的mysql镜像的默认编码与中文英文冲突。

2. 解决

已构建容器,无需重启mysql

此方法只能临时修改编码,用于执行sql脚本,数据库重启后会恢复原来的编码。

  1. 进入mysql容器
    docker exec -it 容器ID bash
  2. 登录mysql
    mysql -u用户名 -p密码
  3. 修改编码
    依次执行一下命令
    set character_set_client=utf8;
    set character_set_connection=utf8;
    set character_set_database=utf8;
    set character_set_results=utf8;
    set character_set_server=utf8;
    在执行sql脚本即可。

已构建容器,需要重启mysql

修改my.cnf配置文件即可

  1. 进入mysql容器
    docker exec -it 容器ID bash
  2. 修改配置文件
    vi /etc/mysql/my.cnf
    文件位置存在差异 可以用find命令查找下。
  3. 在my.cnf中添加
    [client]
    default-character-set=utf8
    [mysqld]
    default-character-set=utf8
  4. 重启mysql即可
    /etc/rc.d/init.d/mysql restart
    文件位置同样存在差异 用find查找即可。

未构建容器

对于未构建容器,在宿主机新建my.cnf,设置配置文件(密码,端口,编码等 百度一下直接复制my.cnf的需要的配置信息),构建容器的时候将宿主机的my.cnf挂在到docker中即可。


版权声明:本文为loserccc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。