温馨提示×

linux mariadb如何设置字符集

小樊
52
2026-10-24 20:37:18
栏目: 云计算

在 Linux 下使用 MariaDB 时,设置字符集(通常推荐 utf8mb4)主要涉及服务端配置、数据库/表级别以及客户端连接三部分。下面按常见场景说明。


一、服务端全局字符集设置(推荐 utf8mb4)

1. 修改配置文件

编辑 MariaDB 配置文件(位置可能为以下之一):

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

在对应段落中添加或修改:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

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

如果是旧版本 MariaDB,也可用 utf8mb4_general_ci

2. 重启 MariaDB

systemctl restart mariadb
# 或
systemctl restart mysql

3. 验证

登录 MariaDB 后执行:

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

期望看到:

character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci

二、已有数据库 / 表修改字符集

1. 修改数据库

ALTER DATABASE dbname
  CHARACTER SET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

2. 修改表

ALTER TABLE tablename
  CONVERT TO CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

3. 修改字段(如有必要)

ALTER TABLE tablename
  MODIFY column_name VARCHAR(255)
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

三、客户端连接字符集设置

方式一:连接时指定

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

方式二:SQL 中设置

SET NAMES utf8mb4;

方式三:应用连接串(示例)

  • JDBC
jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf8mb4
  • PHP (PDO)
new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", $user, $pass);

四、常见问题说明

1. utf8 和 utf8mb4 区别

  • utf8:最多 3 字节(不支持 emoji)
  • utf8mb4:完整 UTF-8(推荐)

2. 修改后中文仍乱码?

检查:

  • 客户端连接字符集
  • 应用代码文件编码(应为 UTF-8)
  • 已存在数据是否转换

如果你能告诉我:

  • MariaDB 版本
  • 是 新装 还是 已有数据
  • 使用语言(PHP / Java / Python 等)

我可以给你更精确的步骤。

0 踩