在 Debian 系统上设置 MySQL 编码(字符集),通常目标是使用 UTF-8(推荐 utf8mb4),以支持中文和 emoji 等特殊字符。下面按 常见场景 详细说明。
先确认当前编码:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
常见默认可能有:
latin1utf8(⚠️ MySQL 的 utf8 不是真正的完整 UTF-8)✅ 推荐配置
| 项目 | 值 |
|---|---|
| 字符集 | utf8mb4 |
| 排序规则 | utf8mb4_unicode_ci |
Debian 常见路径:
/etc/mysql/my.cnf
或(更常见):
/etc/mysql/mysql.conf.d/mysqld.cnf
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld] 下添加:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
有时还需要在 [client] 和 [mysql] 中设置:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
如果文件中没有 [client] 或 [mysql],可以手动添加。
sudo systemctl restart mysql
或:
sudo service mysql restart
登录 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_results utf8mb4
character_set_server utf8mb4
⚠️ 修改配置文件不会自动改变已有数据库
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;
CREATE DATABASE testdb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
utf8?utf8 最多 3 字节utf8mb4 才是真正的 UTF-8✅ 是的,但老版本(MySQL 5.7 及以前)默认是 latin1
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
sudo systemctl restart mysql
如果你愿意,可以告诉我:
mysql -V)我可以给你更精准的配置方案 ✅