mysql安装后配置数据库字符集为utf8mb4

来源:这里教程网 时间:2026-02-28 20:52:52 作者:

MySQL 启动前必须修改的配置文件位置

Linux 下通常是

/etc/my.cnf
/etc/mysql/my.cnf
,macOS 用 Homebrew 安装的可能在
/usr/local/etc/my.cnf
,Windows 是
my.ini
(在 MySQL 安装目录或
C:\Windows\
)。只改运行时 SET 不生效,必须写进配置文件并重启 mysqld。

my.cnf 中要加的三类 utf8mb4 配置项

仅设置

character_set_server = utf8mb4
不够,客户端、连接、数据库默认值都要对齐,否则新建库/表/连接仍会回退到 latin1 或 utf8。必须同时配置以下部分:

[client]
段加
default-character-set = utf8mb4
[mysql]
段加
default-character-set = utf8mb4
[mysqld]
段加:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
skip-character-set-client-handshake = FALSE

验证是否真正生效的 SQL 命令

重启 MySQL 后,用

mysql -u root -p
连上去,执行以下语句检查每层是否都对齐:

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

重点看这 4 项必须全为

utf8mb4
character_set_client
character_set_connection
character_set_database
character_set_server
。如果
init_connect
没生效,
character_set_client
可能还是
latin1
,此时需确认用户是否有 SUPER 权限(否则 init_connect 被跳过)。

已有数据库和表怎么批量转 utf8mb4

配置生效只影响新创建的库和表,老数据不会自动转换。必须手动执行 ALTER:

改库:
ALTER DATABASE <db_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;</db_name>
改表:
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;</table_name>
只改某列(如避免全文索引失效):
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;</column_name></table_name>

注意:

CONVERT TO
会重建表,大表务必在低峰期操作;若字段含全文索引,需先删索引再重建,否则报错
ERROR 1709 (HY000): Index column size too large

相关推荐