MySQL8.x 修改字符集为 utf8mb4
- 查看 mysql 服务是否启动:
service mysql status
启动 mysql 服务:
service mysql start
重启 mysql 服务:
service mysql restart
关闭 mysql 服务:
service mysql stop
- 使用 root 用户登录 mysql:
mysql -u root -p
- 查看当前字符集:
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%';
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个字节。utf8
:utf8mb3
的别名。ucs2
:Unicode字符集的UCS-2编码,每个字符使用两个字节。utf16
:Unicode字符集的UTF-16编码,每个字符使用两个或四个字节。像,ucs2
但扩展了辅助字符。utf16le
:Unicode字符集的UTF-16LE编码。就像utf16
小端而不是大端。utf32
:Unicode字符集的UTF-32编码,每个字符使用四个字节。
输入 exit;
退出 mysql。
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
vi my.cnf
打开 mysql 配置文件 my.cnf :
最后两行表示该文件包含了 /etc/mysql/conf.d 和 /etc/mysql/mysql.conf.d 这两个路径下的配置文件,输入 :q
退出 my.cnf 文件。
cd conf.d
进入到 conf.d 目录下,ls
查看该目录下的所有文件,可以看到里面有 mysql.cnf 配置文件:
root@vultr:/etc/mysql# cd conf.d
root@vultr:/etc/mysql/conf.d# ls
mysql.cnf
vi mysql.cnf
打开配置文件 mysql.cnf ,按下 i 进入编辑模式,在 [mysql]下面加上default-character-set=utf8mb4
,按下 Esc 退出编辑,输入 :wq 保存退出。
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
vi mysqld.cnf
打开配置文件 mysqld.cnf ,按下 i 进入编辑模式,在 log-error下面加上character-set-server=utf8mb4
,按下 Esc 退出编辑,输入 :wq 保存退出。
- 登录 mysql,查看字符集: