在 CentOS 上设置 MySQL 编码(通常为 UTF-8 / utf8mb4),一般分为服务端配置、数据库/表级别以及连接级别三部分。下面以 CentOS 7/8 + MySQL 5.7/8.0 为例说明。
常见路径:
/etc/my.cnf
/etc/my.cnf.d/mysql-server.cnf # MySQL 8.0
/etc/my.cnf.d/server.cnf # MariaDB
编辑配置文件:
vi /etc/my.cnf
添加或修改以下内容(推荐 utf8mb4):
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
⚠️ 注意:
utf8mb4支持 emojiutf8在 MySQL 中最大 3 字节,不完整
# MySQL
systemctl restart mysqld
# MariaDB
systemctl restart mariadb
登录 MySQL:
mysql -u root -p
执行:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
正常应看到:
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_server utf8mb4
ALTER DATABASE dbname
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci;
ALTER TABLE tablename
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8mb4
new PDO(
"mysql:host=localhost;dbname=test;charset=utf8mb4",
$user, $pass
);
但 collation 可能是 utf8mb4_0900_ai_ci,可改:
collation-server = utf8mb4_general_ci
如果你能提供:
SHOW VARIABLES 输出)我可以给你更精准的配置方案。