MySQL 日常使用中,除了常见的 SQL 语句(如
SELECT、INSERT、UPDATE、DELETE),还有一批非常实用的“客户端命令”和“运维排查命令”。这些命令对于连接数据库、查看库表、切换上下文、导入导出数据、排查权限和性能问题都很有帮助。
本文按使用场景做一个速查式总结,尽量覆盖开发中最常见的命令。
一、连接 MySQL
1. 连接本地 MySQL
如果直接把密码写在命令行中也可以:
不过这种方式不安全,因为密码可能会出现在 shell 历史记录中。
2. 连接指定主机和端口
1 mysql -h 127.0.0.1 -P 3306 -u root -p
-h:指定主机地址。
-P:指定端口,注意是大写 P。
3. 连接后直接进入指定数据库
或者:
1 mysql -h 127.0.0.1 -P 3306 -u root -p mydb
4. 执行一条 SQL 后退出
1 mysql -u root -p -e "SHOW DATABASES;"
适合写脚本或快速检查数据库状态。
二、数据库级常用命令
登录 MySQL 后,可以使用下面这些命令。
1. 查看所有数据库
2. 创建数据库
指定字符集:
1 CREATE DATABASE demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
实际项目中更推荐使用 utf8mb4,避免 emoji
或部分特殊字符存储失败。
3. 删除数据库
这是高危操作,执行前务必确认。
4. 切换当前数据库
5. 查看当前使用的数据库
三、表级常用命令
1. 查看当前数据库中的所有表
2. 查看建表语句
1 SHOW CREATE TABLE users\G
3. 查看表结构
或者:
1 SHOW COLUMNS FROM users;
4. 查看表状态
1 SHOW TABLE STATUS LIKE 'users' ;
可以看到存储引擎、行数、更新时间等信息。
5. 重命名表
1 RENAME TABLE old_name TO new_name;
6. 删除表
7. 清空表数据
TRUNCATE 通常比 DELETE FROM users;
更快,但会重置自增主键,并且一般不能像普通删除那样逐行回滚。
四、数据查询与修改常用命令
1. 查询数据
带条件查询:
1 2 3 4 5 SELECT id, name, emailFROM usersWHERE status = 1 ORDER BY id DESC LIMIT 10 ;
2. 插入数据
1 2 INSERT INTO users(name, email)VALUES ('Alice' , 'alice@example.com' );
3. 更新数据
1 2 3 UPDATE usersSET email = 'new@example.com' WHERE id = 1 ;
如果不带 WHERE,会更新整张表,生产环境中要特别小心。
4. 删除数据
1 2 DELETE FROM usersWHERE id = 1 ;
5. 统计数量
1 SELECT COUNT (* ) FROM users;
6. 去重查询
1 SELECT DISTINCT status FROM users;
五、用户与权限相关命令
这部分命令常用于开发环境搭建、服务部署以及权限排查。
1. 查看当前登录用户
1 SELECT USER (), CURRENT_USER ();
2. 创建用户
1 CREATE USER 'dev' @'localhost' IDENTIFIED BY 'strong_password' ;
允许远程连接:
1 CREATE USER 'dev' @'%' IDENTIFIED BY 'strong_password' ;
其中 % 表示允许从任意主机连接,但生产环境应尽量限制来源
IP。
3. 修改用户密码
1 ALTER USER 'dev' @'localhost' IDENTIFIED BY 'new_password' ;
4. 授权
1 GRANT ALL PRIVILEGES ON demo.* TO 'dev' @'localhost' ;
只授予只读权限:
1 GRANT SELECT ON demo.* TO 'dev' @'localhost' ;
5. 刷新权限
在较新的 MySQL 版本里,很多场景下执行 GRANT
后会立即生效,但很多人仍习惯在权限变更后执行一次,便于确认。
6. 查看用户权限
1 SHOW GRANTS FOR 'dev' @'localhost' ;
7. 删除用户
1 DROP USER 'dev' @'localhost' ;
六、事务控制命令
如果使用的是支持事务的存储引擎(如 InnoDB),这些命令非常常见。
1. 开启事务
或者:
2. 提交事务
3. 回滚事务
4. 设置保存点
回滚到指定保存点:
七、索引与执行计划相关命令
1. 查看索引
2. 创建索引
1 CREATE INDEX idx_users_email ON users(email);
3. 删除索引
1 DROP INDEX idx_users_email ON users;
4. 查看 SQL 执行计划
1 EXPLAIN SELECT * FROM users WHERE email = 'alice@example.com' ;
排查慢查询时,EXPLAIN 基本是第一步。
八、状态查看与排查命令
1. 查看 MySQL 版本
2. 查看服务器状态
查看某个特定状态项:
1 SHOW STATUS LIKE 'Threads_connected' ;
3. 查看系统变量
查看字符集相关配置:
1 SHOW VARIABLES LIKE 'character_set_%' ;
查看连接数相关配置:
1 SHOW VARIABLES LIKE 'max_connections' ;
4. 查看当前连接
如果信息被截断,可以使用:
5. 杀掉连接
这里的 12345 是 SHOW PROCESSLIST 中的连接
ID。
九、导入导出常用命令
1. 导出整个数据库
1 mysqldump -u root -p demo > demo.sql
2. 导出指定表
1 mysqldump -u root -p demo users > users.sql
3. 导出时包含存储过程、触发器等
1 mysqldump -u root -p --routines --triggers --events demo > demo_full.sql
4. 导入 SQL 文件
1 mysql -u root -p demo < demo.sql
也可以先登录 MySQL 后执行:
1 SOURCE / path/ to / demo.sql;
在 Windows 下路径通常写成:
1 SOURCE G:/ backup/ demo.sql;
十、mysql 客户端内部命令
下面这些命令是在 mysql
交互式客户端里直接输入的,不需要加分号也通常可以执行。
1. 查看帮助
或者:
2. 查看当前连接信息
或者:
3. 清屏
如果是在 Linux/macOS 环境中,一般是:
4. 执行系统命令
5. 退出客户端
或者:
或者:
十一、几个高频实用技巧
1. 用 \G 纵向显示结果
当查询结果字段很多时:
1 SELECT * FROM users WHERE id = 1 \G
这样往往比横向表格更易读。
2. 先 SELECT 再
UPDATE/DELETE
对于带条件的数据修改,建议先执行:
1 SELECT * FROM users WHERE id = 1 ;
确认无误后再执行更新或删除,避免误操作。
3. 关注字符集
新项目建库建表时,尽量统一使用
utf8mb4,以免后续出现乱码或字符无法保存的问题。
4. 生产环境谨慎使用高危命令
以下命令要格外小心:
DROP DATABASE
DROP TABLE
TRUNCATE TABLE
不带 WHERE 的 UPDATE
不带 WHERE 的 DELETE
最好先备份,再执行。
十二、速查清单
连接
1 2 3 mysql -u root -p mysql -h 127.0.0.1 -P 3306 -u root -p mysql -u root -p -e "SHOW DATABASES;"
数据库
1 2 3 4 SHOW DATABASES;CREATE DATABASE demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE demo; DROP DATABASE demo;
表
1 2 3 4 5 SHOW TABLES;DESC users;SHOW CREATE TABLE users\GTRUNCATE TABLE users;DROP TABLE users;
权限
1 2 3 4 CREATE USER 'dev' @'localhost' IDENTIFIED BY 'strong_password' ;GRANT ALL PRIVILEGES ON demo.* TO 'dev' @'localhost' ;SHOW GRANTS FOR 'dev' @'localhost' ;DROP USER 'dev' @'localhost' ;
排查
1 2 3 4 5 SHOW PROCESSLIST;SHOW FULL PROCESSLIST;SHOW VARIABLES LIKE 'max_connections' ;SHOW STATUS LIKE 'Threads_connected' ;EXPLAIN SELECT * FROM users WHERE id = 1 ;
导入导出
1 2 mysqldump -u root -p demo > demo.sql mysql -u root -p demo < demo.sql