在 Debian 上设置 MySQL(或 MariaDB)编码,通常是为了解决中文乱码问题,核心是把 字符集设置为 utf8mb4(推荐,比 utf8 更完整)。
下面按 常见场景 给你一个完整说明。
先登录 MySQL:
mysql -u root -p
查看当前字符集:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
默认可能是:
latin1utf8(不是真正的 utf8mb4)Debian 常见路径:
/etc/mysql/my.cnf
或:
/etc/mysql/mysql.conf.d/mysqld.cnf
MariaDB 一般在:
/etc/mysql/mariadb.conf.d/50-server.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
sudo systemctl restart mysql
或(MariaDB):
sudo systemctl restart mariadb
重新登录 MySQL:
mysql -u root -p
执行:
SHOW VARIABLES LIKE 'character_set%';
期望结果:
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 字节检查:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
systemctl restart mysql
如果你愿意,可以告诉我:
我可以给你 完全针对你环境的配置方案。