linux下mysql命令乱码
linux下mysql命令乱码详细介绍
在 Linux 下使用 MySQL 命令时出现乱码,通常是字符集配置不一致导致的。以下是详细的排查和解决步骤:
一、检查当前字符集配置
首先登录 MySQL 客户端,执行以下命令查看当前字符集设置:
sql
variables
输出示例(正常应为 utf8mb4 系列):
plaintext
+--------------------------+----------------------------+| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
+--------------------------+----------------------------+
若 character_set_client、character_set_connection、character_set_results 等参数不是 utf8mb4,则需要调整。
二、修改 MySQL 配置文件
MySQL 的字符集配置主要通过 my.cnf(或 my.ini)文件控制,不同 Linux 发行版的配置路径可能不同(如 /etc/my.cnf、/etc/mysql/my.cnf 或 /etc/my/mysql.conf.d/mysqld.cnf)。
步骤 1:编辑配置文件
使用 sudo 权限打开配置文件:
bash
/etc/my.cnf
步骤 2:添加 / 修改字符集配置
在文件中添加以下内容(若已存在对应段落则修改):
ini
# 服务端配置# MySQL 客户端(命令行工具)
# 通用客户端配置
步骤 3:重启 MySQL 服务
修改后需重启 MySQL 服务使配置生效:
bash
systemctl restart mysql
三、临时解决:连接时指定字符集
如果无法修改配置文件(如无权限),可在连接 MySQL 时临时指定字符集:
bash
mysql 用户名 --default-character-setutf8mb4
连接后,也可执行以下命令临时设置字符集:
sql
names utf8mb4
四、验证数据库 / 表字符集
若数据库或表的字符集不是 utf8mb4,即使客户端配置正确仍可能乱码。可通过以下命令检查:
sql
数据库名
表名
若字符集不是 utf8mb4,可通过以下命令修改:
sql
数据库名 utf8mb4 utf8mb4_unicode_ci
表名 utf8mb4 utf8mb4_unicode_ci
五、常见问题
- 配置文件路径不对:可通过
mysqld --verbose --help | grep -A 1 'Default options'查找配置文件位置。 - 权限问题:修改
my.cnf需要sudo权限,否则无法保存。 - 客户端工具问题:若使用第三方工具(如 Navicat),需在工具中单独设置字符集为
utf8mb4。
通过以上步骤,基本可以解决 Linux 下 MySQL 命令乱码的问题。核心是确保服务端、客户端、数据库 / 表的字符集统一为 utf8mb4(支持全量 Unicode 字符)。