模式 'mysql' 在“mysql - 模式的默认字符集:utf8”中是什么意思?是innodb吗?

What does schema 'mysql' mean in 'mysql - schema's default character set: utf8'? Is it innodb?

在步骤 5.7 -> 8.0.23 中从 5.6 -> 5.7 -> 8.0.23 升级 mysql 时,我收到警告:

The following objects use the utf8mb3 character set. It is recommended to convert them to use utf8mb4 instead, for improved Unicode support.
More Information:
https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8mb3.html

common_schema - schema's default character set: utf8
mysql - schema's default character set: utf8
common_schema._global_qs_functions.function_arguments - column's default character set: utf8
common_schema._global_qs_variables.value_snapshot - column's default character set: utf8
common_schema._global_script_report_data.info - column's default character set: utf8
...

模式 'mysql' 在“mysql - 模式的默认字符集:utf8”中是什么意思?是innodb吗?

每个 MySQL 实例都有一个名为 mysql 的系统架构,其中包含 table 系统信息,例如用户密码和权限、时区、存储例程等。您可以在手册中阅读:https://dev.mysql.com/doc/refman/5.7/en/system-schema.html

此警告告诉您系统架构是使用不推荐的默认字符集定义的。您可以这样查看默认字符集:

mysql> show create schema mysql;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| mysql    | CREATE DATABASE `mysql` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+-------------------------------------------------------------------+

在我的例子中,系统模式的默认字符集是 utf8mb4。

模式的默认字符集无效,除非您创建一个新的 table 并且不指定其字符集。模式的默认字符集将用于 table。

(在 MySQL 中,“模式”和“数据库”在大多数上下文中是同义词。)