1. 会话级别设置临时生效
通过`SET`命令修改当前连接的字符集,断开连接后失效: ```sql SET character_set_client = utf8mb4; ``` 或同时设置多个关联参数推荐: ```sql SET NAMES 'utf8mb4'; 该命令同时设置client、connection、results三个字符集 ```2. 全局级别设置需重启生效
修改全局配置,影响所有新连接已存在连接不受影响: ```sql SET GLOBAL character_set_client = utf8mb4; ``` 意:需具有`SUPER`权限,且重启MySQL服务后会恢复默认值。3. 配置文件设置永久生效
编辑MySQL配置文件my.cnf或my.ini: ```ini [mysqld] character-set-client-handshake = FALSE init_connect = 'SET NAMES utf8mb4' character-set-server = utf8mb4[mysql] default-character-set = utf8mb4 ``` 修改后重启MySQL服务: ```bash systemctl restart mysqld # Linux系统 net stop mysql && net start mysql # Windows系统 ```
四、客户端连接参数设置 部分客户端工具可直接指定字符集参数:- 命令行客户端: ```bash mysql -u root -p --default-character-set=utf8mb4 ```
- JDBC连接: ```java jdbc:mysql://host:port/dbname?useUnicode=true&characterEncoding=utf8mb4 ``` 五、意事项
- 确保设置的字符集如utf8mb4在MySQL中存在且支持
- 全局设置需重启服务后生效,优先使用配置文件方式
- 应用程序连接数据库时应明确指定字符集,避免依赖默认配置
- 修改字符集后需验证数据读写是否正常,防止历史数据乱码
