温馨提示×

debian mysql如何调字符集

小樊
51
2026-09-01 21:30:41
栏目: 云计算

在 Debian 上调整 MySQL(或 MariaDB)的字符集,通常目标是把默认字符集改成 utf8mb4(推荐,支持 emoji 和完整 UTF‑8)。下面按“配置文件 → 重启 → 验证 → 已有库表”的顺序说明。


一、修改 MySQL 配置文件

Debian 下常见配置文件位置:

  • MySQL:/etc/mysql/mysql.conf.d/mysqld.cnf
  • MariaDB:/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

保存后退出。


二、重启 MySQL 服务

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

四、修改已有数据库和表(重要)

改配置不会影响已有库表,需要手动改:

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;

五、连接时指定字符集(应用层)

应用连接数据库时也要指定:

  • PHP:charset=utf8mb4
  • Java JDBC:
    jdbc:mysql://host/db?useUnicode=true&characterEncoding=utf8mb4
    
  • Python:
    charset="utf8mb4"
    

六、常见问题

1. 用 utf8 还是 utf8mb4?

✅ 用 utf8mb4
MySQL 的 utf8 只支持 3 字节,存不了 emoji。

2. 修改后中文乱码?

  • 检查客户端字符集
  • 检查表/字段是否真的转换
  • 检查应用连接参数

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

  • 用的是 MySQL 还是 MariaDB
  • Debian 版本
  • 是新装还是已有数据要迁移

我可以给你更精确的命令。

0 踩