温馨提示×

怎么设置Debian MySQL字符集

小樊
48
2026-09-23 03:26:11
栏目: 云计算

在 Debian 上设置 MySQL(或 MariaDB)字符集,通常目标是整个数据库默认使用 UTF-8(推荐 utf8mb4),避免中文乱码。下面按常见场景说明。


一、确认当前字符集

mysql -u root -p
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

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

1. 找到配置文件

Debian 下常见路径:

  • MySQL:/etc/mysql/mysql.conf.d/mysqld.cnf
  • MariaDB:/etc/mysql/mariadb.conf.d/50-server.cnf

也可用:

mysql --help | grep "Default options"

2. 修改配置文件

编辑配置文件(示例为 utf8mb4):

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

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

✅ utf8mb4 支持 emoji,比 utf8 更推荐


3. 重启 MySQL

sudo systemctl restart mysql
# 或
sudo systemctl restart mariadb

三、已有数据库修改字符集

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;

四、连接时指定字符集(程序端)

MySQL 命令行

mysql -u root -p --default-character-set=utf8mb4

PHP 示例

$pdo = new PDO(
  "mysql:host=localhost;dbname=test;charset=utf8mb4",
  $user,
  $pass
);

五、常见问题

1. 已乱码的数据能恢复吗?

  • 若原数据写入时编码错误,通常无法完全恢复
  • 正确做法:先统一字符集,再重新导入数据

2. 要不要用 utf8?

  • ❌ 不推荐(MySQL 的 utf8 只支持 3 字节)
  • ✅ 用 utf8mb4

如果你告诉我:

  • 使用的是 MySQL 还是 MariaDB
  • Debian 版本
  • 是否已有数据

我可以给你更精确的配置示例。

0 踩