在 Debian 上调整 MySQL(或 MariaDB)的字符集,通常目标是把默认字符集改成 utf8mb4(推荐,支持 emoji 和完整 UTF‑8)。下面按“配置文件 → 重启 → 验证 → 已有库表”的顺序说明。
Debian 下常见配置文件位置:
/etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/mariadb.conf.d/50-server.cnf编辑配置文件(需 root):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld] 下添加或修改:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
若想客户端也默认 utf8mb4,可加:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
保存后退出。
sudo systemctl restart mysql
# 或 MariaDB
sudo systemctl restart mariadb
登录 MySQL:
mysql -u root -p
执行:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
期望看到:
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
改配置不会影响已有库表,需要手动改:
ALTER DATABASE 数据库名
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
ALTER TABLE 表名
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE 表名
MODIFY 列名 VARCHAR(255)
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
应用连接数据库时也要指定:
charset=utf8mb4jdbc:mysql://host/db?useUnicode=true&characterEncoding=utf8mb4
charset="utf8mb4"
✅ 用 utf8mb4
MySQL 的 utf8 只支持 3 字节,存不了 emoji。
如果你愿意,可以告诉我:
我可以给你更精确的命令。