温馨提示×

centos mysql如何设置编码

小樊
41
2026-10-26 06:35:52
栏目: 云计算

在 CentOS 上设置 MySQL 编码(通常为 UTF-8 / utf8mb4),一般分为服务端配置、数据库/表级别以及连接级别三部分。下面以 CentOS 7/8 + MySQL 5.7/8.0 为例说明。


一、修改 MySQL 服务端编码(最重要)

1. 找到 MySQL 配置文件

常见路径:

/etc/my.cnf
/etc/my.cnf.d/mysql-server.cnf   # MySQL 8.0
/etc/my.cnf.d/server.cnf        # MariaDB

2. 修改配置文件

编辑配置文件:

vi /etc/my.cnf

添加或修改以下内容(推荐 utf8mb4):

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'

⚠️ 注意:

  • utf8mb4 支持 emoji
  • utf8 在 MySQL 中最大 3 字节,不完整

3. 重启 MySQL

# MySQL
systemctl restart mysqld

# MariaDB
systemctl restart mariadb

二、验证 MySQL 编码

登录 MySQL:

mysql -u root -p

执行:

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

正常应看到:

character_set_client     utf8mb4
character_set_connection utf8mb4
character_set_database   utf8mb4
character_set_server     utf8mb4

三、已存在数据库修改编码

1. 修改数据库

ALTER DATABASE dbname
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci;

2. 修改表

ALTER TABLE tablename
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

四、连接时指定编码(程序端)

JDBC

jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8mb4

PHP (PDO)

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

五、常见问题

1. 修改后还是 latin1?

  • 检查是否修改了正确的配置文件
  • 是否重启 MySQL
  • 是否只改了客户端没改服务端

2. MySQL 8.0 默认就是 utf8mb4

但 collation 可能是 utf8mb4_0900_ai_ci,可改:

collation-server = utf8mb4_general_ci

如果你能提供:

  • CentOS 版本
  • MySQL / MariaDB 版本
  • 当前编码情况(SHOW VARIABLES 输出)

我可以给你更精准的配置方案。

0 踩