温馨提示×

Debian怎么设置MySQL编码

小樊
45
2026-08-14 23:43:01
栏目: 云计算

在 Debian 上设置 MySQL(或 MariaDB)编码,通常是为了解决中文乱码问题,核心是把 字符集设置为 utf8mb4(推荐,比 utf8 更完整)。

下面按 常见场景 给你一个完整说明。


一、确认当前编码

先登录 MySQL:

mysql -u root -p

查看当前字符集:

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

默认可能是:

  • latin1
  • utf8(不是真正的 utf8mb4)

二、修改 MySQL 配置文件(推荐方式 ✅)

1️⃣ 找到配置文件

Debian 常见路径:

/etc/mysql/my.cnf

或:

/etc/mysql/mysql.conf.d/mysqld.cnf

MariaDB 一般在:

/etc/mysql/mariadb.conf.d/50-server.cnf

2️⃣ 修改配置文件

编辑配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld] 下添加:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

3️⃣ 设置客户端编码

[client][mysql] 下添加(如果没有就新建):

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

4️⃣ 重启 MySQL

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

四、已有数据库 / 表修改编码(重要 ⚠️)

1️⃣ 修改数据库

ALTER DATABASE 数据库名
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

2️⃣ 修改表

ALTER TABLE 表名
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

3️⃣ 修改字段(可选)

ALTER TABLE 表名
MODIFY 列名 VARCHAR(255)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

五、新建数据库时指定编码(推荐)

CREATE DATABASE testdb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

六、常见错误 & 说明

❌ 为什么不用 utf8

  • MySQL 的 utf8 只支持 3 字节
  • emoji、部分生僻字会乱码
  • ✅ 正确做法:utf8mb4

❌ Debian 修改后不生效?

检查:

  • 是否修改了 正确的配置文件
  • 是否 重启 MySQL
  • 是否是 已有库/表未转换

七、快速总结(最常用)

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
systemctl restart mysql

如果你愿意,可以告诉我:

  • ✅ MySQL 还是 MariaDB?
  • ✅ Debian 版本(10 / 11 / 12)?
  • ✅ 是否是 Docker / 云服务器?

我可以给你 完全针对你环境的配置方案

0