01.`Ubuntu18.04`下修改`mysql`默认的编码

2020-07-24  本文已影响0人  风安峻_

对于Ubuntu18.04,使用apt install mysql-server安装的mysql,系统默认的字符编码是latin1,这个字符集并不支持中文,输入中文时会出现乱码甚至错误,因此可以修改字符编码为常用的utf8、支持emojiutf8mb4编码集、GBK等。

  1. 进入数据库,有两条命令可以查看当前数据库的编码集。
    • show variables like 'character%';
mysql编码集1 mysql编码集2
  1. 修改默认编码

    • Ubuntu绝大多数系统和相关服务的配置文件都在etc目录下,默认情况下,mysql的配置文件在/etc/mysql/目录下

    1. 进入/etc/mysql文件夹,查看当前文件夹的文件

      # 进入 /etc/mysql/文件夹
      cd /etc/mysql/
      # 查看当前文件夹下的文件以及目录
      ls -l
      
      mysql配置文件

      mysql.cnf就是mysql的配置文件。

    2. 查看mysql.cnf的内容

      # 查看文件内容并展示行号
      cat -n mysql.cnf
      
    mysql.cnf文件内容

    mysql.cnfmysql的基础配置文件,在最后引用了两个文件 /etc/mysql/conf.d/(client端)和/etc/mysql/mysql.conf.d/(server端)

    1. 编辑server端的编码集

      • vim /etc/mysql/mysql.conf.d/mysqld.cnf
      编辑mysqld.cnf
      • skip-external-locking下面添加character-set-server = utf8
      修改server端编码集
    2. 重启mysql

      • /etc/init.d/mysql restart
      重启mysql
    3. 进入mysql,查看是否已经修改默认编码

      方式1 方式2
    4. 创建数据库、数据表并查看编码

      # 创建名为 db_test 的数据库
      create database db_test;
      # 展示创建数据库时的信息
      show create database db_test;
      
      展示创建数据库的默认编码
      use db_test;
      # 创建名为 test 的数据表
      create table test(
          test_id int not null primary key auto_increment comment '测试id',
          test_name varchar(32) not null comment '测试姓名'
      );
      # 展示创建数据表时的信息
      show create table test;
      
      展示创建数据表的默认编码 查看插入数据是否有误
  2. 修改默认的排序规则

    1. 查看数据库的默认排序规则

      • show variables like 'collation%';

        查看默认排序规则
    2. 可以通过编辑server/etc/mysql/mysql.conf.d/mysqld.cnf文件来修改默认排序规则

      • vim /etc/mysql/mysql.conf.d/mysqld.cnf

        编辑mysqld.cnf
      • collation-server=utf8_unicode_ci

        • utf8_unicode_ci为例,一般都是utf8_general_ci
        添加规则
      • 重启mysql

        • /etc/init.d/mysql restart
        重启mysql
    3. 查看排序规则

      • show variables like 'collation%';
      查看排序规则
  3. 修改mysql编码的坑

    1. 不能修改client端的字符集,否则将会不能输入中文
    • 修改 mysql.cnf
    编辑mysql.cnf
    • 添加default-charcter-set = utf8
    添加default-character-set=utf8
    • sql语句不能输入中文,但是英文可以
    不能输入中文
上一篇下一篇

猜你喜欢

热点阅读