一、关于MySQL8.x 字符集
正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能。
MySQL中utf8字符集使用三个字节编码一个字符,自2004(mysql4.1)年被引入,能够支持绝大多数语言,但依然有些字符不能正确编码,如表情字符,为此mysql5.5引入了utf8mb4字符集,提供了另一种选择。在mysql5.7对utf8mb4进行了大幅优化,并丰富了校验字符集。
MySQL8 默认编码使用utf8mb4, utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符历史。
MySQL数据库的 "utf8"并不是真正概念里的 UTF-8,MySQL中的"utf8"编码只支持最大3字节每字符,真正的大家正在使用的UTF-8编码是应该能支持4字节每个字符。
MySQL的开发者没有修复这个bug,他们在2010年增加了一个变通的方法:一个新的字符集"utf8mb4"另外,utf-32编码固定使用4字节,32bit存储相比utf8浪费空间。
直到今日mysql8, utf8mb4成为了默认字符集,并极大地扩充了collation set,增加了accent sensitive(as) , accent_insensitive(ai)(重读敏感,对于某些语言需要重读的字符可以是用专用字符标识,如:ã) ,可以支持更加丰富的字符校验。
二、MySQL8.x字符集设置
设置MySQL字符集为 utf8
# cat /etc/my.cnf
####################################################
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = "SET NAMES 'utf8'"
character-set-client-handshake = FALSE
[mysql]
default-character-set = utf8
[client]
default-character-set = utf8
#######################################################
# cat /etc/my.cnf
#################################################
[mysqld]
init_connect ='set collation_connection = utf8_general_ci'
init_connect ='set collation_database=utf8_general_ci'
init_connect ='set names utf8'
init_connect ='set character_set_connection=utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
[mysql]
default-character-set = utf8
[client]
default-character-set = utf8
##################################################
mysql> show variables like '%character%';
设置MySQL字符集为 utf8mb4
# cat /etc/my.cnf
###############################################
[mysqld]
# Character Settings
init_connect='SET NAMES utf8mb4'
# 连接建立时执行设置的语句,对super权限用户无效
character-set-server = utf8mb4
# 设置服务端校验规则
collation-server = utf8mb4_general_ci
skip-character-set-client-handshake
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
###################################################
三、参考
MySQL 8.0安装与字符集设置
https://www.cnblogs.com/kevingrace/p/10482469.html
https://www.cnblogs.com/jiangnima/p/11290681.html
MySQL修改编码为UTF-8无效的解决办法
https://blog.csdn.net/qq_41366268/article/details/89161424
MySQL 8.0.11 字符集
https://blog.csdn.net/llyyxx0088/article/details/80062139
MySQL 8.0:字符集从 utf8 转换成 utf8mb4
https://zhuanlan.zhihu.com/p/92404746
MySQL8默认字符集utf8mb4
https://dbalife.info/2018/06/16/MySQL8%E9%BB%98%E8%AE%A4%E5%AD%97%E7%AC%A6%E9%9B%86utf8mb4