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;
mysql --default-character-set=utf8mb4 -u user -p。