【MySQL8.x】MySQL8.x 字符集设置

一、关于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

#######################################################

 

【MySQL8.x】MySQL8.x 字符集设置_第1张图片

 

#  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

##################################################

 

【MySQL8.x】MySQL8.x 字符集设置_第2张图片

mysql> show variables like '%character%';

 

【MySQL8.x】MySQL8.x 字符集设置_第3张图片

 

设置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

###################################################

 

【MySQL8.x】MySQL8.x 字符集设置_第4张图片

 

 

三、参考

 

MySQL 8.0安装与字符集设置

https://www.cnblogs.com/kevingrace/p/10482469.html

 

MySQL8.0.17默认字符集latin1改utf8

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

你可能感兴趣的:(MySQL)