MySQL常用命令
大家好,我是一名拥有10年以上经验的DBA老兵。
做这个系列,源于一个朴素的愿望:把踩过的坑、总结的经验系统化输出,希望能帮到刚入行或想进阶的兄弟们。
让我们开始今天的第4天内容。
背景引入
💡 说白了:MySQL命令就两种——一种是
SHOW,SELECT(让你知道数据库现在啥样),一种是DML,DDL(让你去改数据)。前者保平安,后者干活用。
很多同学会写SQL,但拿起MySQL客户端就蒙——不知道指定什么参数、怎么查看状态、怎么切换数据库。
今天的目标:掌握MySQL客户端常用命令,面试和工作都能底气十足!
核心概念
一、连接与基础命令
# 连接MySQL(最常用)
mysql -u root -p
mysql -h 127.0.0.1 -P 3306 -u root -p
# 指定字符集连接
mysql -u root -p --default-character-set=utf8mb4
# 连接后切换数据库
USE database_name;
# 查看当前数据库
SELECT DATABASE();
面试必问:
- MySQL连接参数有哪些?
- 如何指定端口和字符集?
📝 面试解答:
Q: MySQL连接参数有哪些?
-u:用户名-p:密码(直接在-p后面写密码是不安全的,建议-p回车后输入)-h:主机地址,默认127.0.0.1-P:端口号,大写P,默认3306--default-character-set:指定字符集,避免中文乱码-e:直接执行SQL后退出,适合脚本-S:指定socket文件(仅限管理员)
Q: 如何指定端口和字符集?
-P 3306指定端口(大写P)--default-character-set=utf8mb4指定字符集
二、客户端快捷命令
-- 简写命令(客户端内使用)
\c -- 中止当前输入
\q -- 退出客户端(quit)
\s -- 查看状态信息(status)
\g -- 发送命令(等同于回车)
\G -- 发送命令并垂直显示结果
source file -- 执行SQL文件
\. file -- 同source
-- 退出客户端
EXIT;
-- 或
QUIT;
-- 或
\q
-- 查看版本和状态
STATUS;
-- 或
\s
-- 结果示例:
mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 5
Current database: test
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 8.0.28 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
UNIX socket: /var/lib/mysql/mysql.sock
💡 说白了:面试官问你有没有用过
\s命令,你说没用过,那就尴尬了——这可是查看MySQL状态最常用的快捷命令。
三、数据库操作命令
-- 查看数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE db_name DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 删除数据库(生产环境千万别手抖!)
DROP DATABASE db_name;
-- 查看当前数据库的表
SHOW TABLES;
-- 查看表结构
DESC table_name;
-- 或
DESCRIBE table_name;
-- 或
SHOW CREATE TABLE table_name\G
四、表操作命令
-- 查看表状态
SHOW TABLE STATUS LIKE 'table_name';
-- 查看索引
SHOW INDEX FROM table_name;
-- 查看创建表语句
SHOW CREATE TABLE table_name;
-- 查看表的字段信息
SHOW COLUMNS FROM table_name;
-- 或
DESCRIBE table_name;
💡 说白了:
SHOW CREATE TABLE是排查问题的神器——有时候建表语句和预期不一样,有没有索引,一SHOW就知道。
五、状态查看命令
-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Threads_running';
-- 查看最大连接数
SHOW VARIABLES LIKE 'max_connections';
-- 查看缓存命中率(重要!)
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%';
-- 计算:Innodb_buffer_pool_read_requests / (Innodb_buffer_pool_read_requests + Innodb_buffer_pool_reads)
-- 查看慢查询数量
SHOW GLOBAL STATUS LIKE 'Slow_queries';
-- 查看查询缓存状态(MySQL 8.0已移除,仅供参考)
SHOW VARIABLES LIKE 'query_cache%';
-- 查看 InnoDB 状态(排查锁问题经常用到)
SHOW ENGINE INNODB STATUS;
-- 查看当前正在执行的进程
SHOW PROCESSLIST;
-- 或
SHOW FULL PROCESSLIST;
💡
SHOW PROCESSLIST是排查"某个SQL怎么这么慢"的第一招——直接看当前在跑什么。
六、变量查看命令
-- 查看所有变量
SHOW VARIABLES;
-- 查看特定变量
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'max_connections';
-- 模糊匹配
SHOW VARIABLES LIKE 'timeout%';
SHOW VARIABLES LIKE '%log%';
实战案例
场景一:快速排查连接数问题
-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
-- 查看正在运行的连接数
SHOW STATUS LIKE 'Threads_running';
-- 查看最大连接数
SHOW VARIABLES LIKE 'max_connections';
-- 如果发现连接数快满了,再查看具体是谁在连接
SHOW PROCESSLIST;
场景二:查看慢查询配置
-- 查看慢查询是否开启
SHOW VARIABLES LIKE 'slow_query_log';
-- 查看慢查询时间阈值
SHOW VARIABLES LIKE 'long_query_time';
-- 查看慢查询日志文件路径
SHOW VARIABLES LIKE 'slow_query_log_file';
场景三:查看字符集配置
-- 查看所有字符集相关变量
SHOW VARIABLES LIKE 'character%';
-- 结果示例:
+--------------------------+-----------------------------+
| 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 |
+--------------------------+-----------------------------+
避坑指南
⚠️ 真实踩过的坑:
连接时不指定字符集,中文乱码
- 一定要加
--default-character-set=utf8mb4 - 或者登录后执行
SET NAMES utf8mb4;
- 一定要加
在生产环境执行 DROP DATABASE
- 手动删除时务必先
USE确认当前库 - 建议先
DROP DATABASE IF EXISTS db_name;避免报错
- 手动删除时务必先
SHOW PROCESSLIST 不显示完整SQL
- 需要用
SHOW FULL PROCESSLIST能看更全的输出
- 需要用
字符集配置看错变量
character_set_server是服务端默认字符集character_set_database是当前数据库的字符集,不一样!
思考题
🤔 互动时间:
SHOW PROCESSLIST和SHOW FULL PROCESSLIST有什么区别?- 如何快速查看MySQL的当前状态(连接数、版本、字符集)?
总结
🎯 面试考点
- MySQL连接参数:-u/-p/-h/-P/--default-character-set
- 客户端快捷命令:\s、\G、\q、source
- 状态查看命令:SHOW PROCESSLIST、SHOW STATUS、SHOW VARIABLES
- 常用SHOW命令:SHOW DATABASES/TABLES/INDEX/CREATE TABLE
- 字符集配置:SET NAMES utf8mb4
💡 AI实战建议:让自己的AI助手记住故障排查命令流,每次遇到问题时自动执行:
# 1. 先看整体状态
SHOW GLOBAL STATUS LIKE 'Threads_connected'; -- 当前连接数
SHOW GLOBAL STATUS LIKE 'Threads_running'; -- 正在跑的连接
SHOW GLOBAL STATUS LIKE 'Slow_queries'; -- 慢查询数量
# 2. 看谁在连接
SHOW FULL PROCESSLIST; -- 所有在执行的SQL
# 3. 看具体问题
SHOW VARIABLES LIKE 'long_query_time'; -- 慢查询阈值
SHOW ENGINE INNODB STATUS; -- InnoDB状态(锁问题)
# 4. 查表结构确认索引
SHOW CREATE TABLE table_name\G -- 确认是否用到索引
然后把这些结果发给AI,让它帮你分析:"MySQL现在这个状态,帮我分析可能的原因。"
下期预告:索引基础:B+树详解 —— 面试必问!
全本合集:《每天一个MySQL知识点,百日打怪升级》,您的关注是我每日更新的动力
有问题欢迎评论区交流,明天见!