解决Docker容器中MySQL中文乱码


  1. 通过容器id进入容器内部

    docker exec -it container_id bash
    
  2. 进入Mysql通过SHOW VARIABLES LIKE 'character%';查看编码,发现部分编码为latin1

  3. 容器的系统默认为debian,而且没有安装vim,并且下载速度感人,所以先配置一波镜像

    1. 查看debian版本

      cat /etc/debian_version
      
    2. 查看该版本阿里云的镜像配置

    3. 进入/etc/aptsources.list就是镜像配置文件

    4. 备份文件

      cp sources.list sources.list_bak
      
    5. 删除sources.list

      rm sources.list
      
    6. 重写sources.list

      我用的是debian9

      echo "deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib" > sources.list
      
  4. 更新源库并安装vim

    apt-get update
    
    apt-get install vim
    
  5. 进入/etc/mysql,使用vim修改my.cnf

    1. 因为这时候的vim不支持复制粘贴,需要用以下方法解决

      • 在普通模式下键入下面的值

        :set mouse-=a
        

        但是每次重新打开vim都需要重新设置

      • 编辑~/.vimrc文件,加入以下代码便可一劳永逸

        if has('mouse')
            set mouse-=a 
        endif
        
    2. 复制粘贴以下配置

      [client]
      port = 3306
      socket = /var/lib/mysql/mysql.sock
      default-character-set=utf8
      
      [mysqld]
      port = 3306
      socket = /var/lib/mysql/mysql.sock
      character-set-server=utf8
      
      [mysql]
      no-auto-rehash
      default-character-set=utf8
      
  6. 回到docker,输入以下命令重启容器

    docker restart container_id
    


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM