debian

Debian MariaDB字符集设置指南

小樊
40
2025-11-17 11:03:32
栏目: 云计算

Debian 上 MariaDB 字符集设置指南

一 目标与原则

二 配置文件与参数

# /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
character-set-server          = utf8mb4
collation-server              = utf8mb4_unicode_ci
character-set-client-handshake = FALSE   # 忽略客户端字符集声明,避免被客户端覆盖
init_connect                  = 'SET NAMES utf8mb4'

# 可选:避免文件系统字符集干扰
character-set-filesystem     = binary

# 可选:若需兼容旧应用,可设置连接级默认
# skip-character-set-client-handshake

# 可选:InnoDB 全文索引与排序缓冲(按需)
# innodb_ft_enable_stopword      = 1
# innodb_ft_server_stopword_table= mysql/my_stopwords
# innodb_sort_buffer_size      = 2M
# /etc/mysql/mysql.conf.d/client.cnf
[client]
default-character-set         = utf8mb4

# /etc/mysql/mysql.conf.d/mysql.cnf
[mysql]
default-character-set         = utf8mb4

三 应用与验证

sudo systemctl restart mariadb
-- 查看字符集
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

-- 预期关键项示例
-- character_set_server     = utf8mb4
-- collation_server       = utf8mb4_unicode_ci
-- character_set_client     = utf8mb4
-- character_set_connection = utf8mb4
-- collation_connection   = utf8mb4_unicode_ci
-- character_set_database   = utf8mb4
-- character_set_results    = utf8mb4
-- character_set_system    = utf8
-- character_sets_dir      = /usr/share/mysql/charsets/

四 存量库表迁移与注意事项

-- 修改数据库(仅影响后续对象,不转换已有数据)
ALTER DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改表(不转换数据)
ALTER TABLE your_tbl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 仅修改列的字符集/排序规则(按需)
ALTER TABLE your_tbl MODIFY col_name VARCHAR(255)
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

0
看了该问题的人还看了