为什么要启用uff8-mb4呢,因为mysql以前的版本的默认utf8是阉割版,最多只用3个字节存贮一个字符,某些信息无法存入数据库。所以在后期的版本中就有了utf8-mb4,但还不是默认值,也需要我们放弃以前的老的处理方法。
uff8和 ut8mb4 的区别就在于最多只支持 3 个字节,因此不支持 Unicode 的补充字符集。保存数据时会出1366错误。
Unicode 是一个字符集,包含 17 个 Plane,每个 Plane 65536 个码点,Plane0 是 BMP,其他 Plane 是补充字符
UTF-8 是一种编码规范,用 1~4 个字节编码 Unicode 字符,兼容 ASCII,中文 3 字节,补充字符如 emoji 需要 4 字节)
那么为了完全启用utf8mb4编码,除了 server 编码,记得也要修改连接的编码(客户端编码)。

首先 设置服务器默认字符集为 utf8mb4,ubuntu 18server mysql默认安装mysql5.7所以还需要修改,期待ubuntu20以后的版本能够更新到5.8,就不需要如此操作了,因为在mysql5.8以后的版本中默认就是utf8mb4。

只需要关心5个系统变量,这5个都改为 utf8mb4 则修改成功:
character_set_client
character_set_connection
character_set_results
character_set_server
character_set_database
my.cnf 是MySQL 的配置文件,

ubuntu 18.04lts把mysql的配置文件也分成几个文件存放,主配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#在[mysqld]在下方添加以下代码

[mysqld]
character-set-server=utf8mb4
init_connect='SET collation_connection=uft8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=uft8mb4_general_ci