MySQL8.x 修改字符集为 utf8mb4

  1. 查看 mysql 服务是否启动:
service mysql status

image-20210509112114735

启动 mysql 服务:

service mysql start

重启 mysql 服务:

service mysql restart

关闭 mysql 服务:

service mysql stop
  1. 使用 root 用户登录 mysql:
mysql -u root -p
  1. 查看当前字符集:
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%';

image-20210509123655409

mysql 8.x 默认的字符集为 utf8mb3,注意:utf8mb3 和 utf8 是同一个字符集。

这里我弄了好久,在配置文件里面写的 default-character-set=utf8, 然后重启 mysql 服务,重启服务器,结果查询到的字符集一直都是 utf8mb3 ,后来查看 mysql 的官方文档https://dev.mysql.com/doc/refman/8.0/en/charset-unicode.html 才知道原来 utf8mb3 和 utf8 是同一个字符集。

MySQL支持以下Unicode字符集:

  • utf8mb4:Unicode字符集的UTF-8编码,每个字符使用1-4个字节。
  • utf8mb3:Unicode字符集的UTF-8编码,每个字符使用1-3个字节。
  • utf8utf8mb3的别名。
  • ucs2:Unicode字符集的UCS-2编码,每个字符使用两个字节。
  • utf16:Unicode字符集的UTF-16编码,每个字符使用两个或四个字节。像, ucs2但扩展了辅助字符。
  • utf16le:Unicode字符集的UTF-16LE编码。就像utf16小端而不是大端。
  • utf32:Unicode字符集的UTF-32编码,每个字符使用四个字节。

输入 exit; 退出 mysql。

  1. cd ../etc/mysql 进入到 etc/mysql 目录下,ls 查看该目录下的所有文件:
root@vultr:~# cd ../etc/mysql
root@vultr:/etc/mysql# ls
conf.d	my.cnf	my.cnf.fallback  mysql.cnf  mysql.conf.d
  1. vi my.cnf 打开 mysql 配置文件 my.cnf :

image-20210509122116830

最后两行表示该文件包含了 /etc/mysql/conf.d 和 /etc/mysql/mysql.conf.d 这两个路径下的配置文件,输入 :q 退出 my.cnf 文件。

  1. cd conf.d 进入到 conf.d 目录下,ls 查看该目录下的所有文件,可以看到里面有 mysql.cnf 配置文件:
root@vultr:/etc/mysql# cd conf.d
root@vultr:/etc/mysql/conf.d# ls
mysql.cnf
  1. vi mysql.cnf 打开配置文件 mysql.cnf ,按下 i 进入编辑模式,在 [mysql]下面加上 default-character-set=utf8mb4,按下 Esc 退出编辑,输入 :wq 保存退出。

image-20210509130751437

  1. cd ../mysql.conf.d 进入到 mysql.conf.d 目录下,ls 查看该目录下的所有文件,可以看到里面有 mysqld.cnf 配置文件:
root@vultr:/etc/mysql/conf.d# cd ../mysql.conf.d
root@vultr:/etc/mysql/mysql.conf.d# ls
mysqld.cnf
  1. vi mysqld.cnf 打开配置文件 mysqld.cnf ,按下 i 进入编辑模式,在 log-error下面加上 character-set-server=utf8mb4,按下 Esc 退出编辑,输入 :wq 保存退出。

image-20210509130359975

  1. 登录 mysql,查看字符集:

image-20210509131029346