MySQL常用命令

MySQL 日常使用中,除了常见的 SQL 语句(如 SELECTINSERTUPDATEDELETE),还有一批非常实用的“客户端命令”和“运维排查命令”。这些命令对于连接数据库、查看库表、切换上下文、导入导出数据、排查权限和性能问题都很有帮助。

本文按使用场景做一个速查式总结,尽量覆盖开发中最常见的命令。


一、连接 MySQL

1. 连接本地 MySQL

1
mysql -u root -p
  • -u:指定用户名。
  • -p:提示输入密码。

如果直接把密码写在命令行中也可以:

1
mysql -u root -p123456

不过这种方式不安全,因为密码可能会出现在 shell 历史记录中。

2. 连接指定主机和端口

1
mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h:指定主机地址。
  • -P:指定端口,注意是大写 P

3. 连接后直接进入指定数据库

1
mysql -u root -p mydb

或者:

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. 查看所有数据库

1
SHOW DATABASES;

2. 创建数据库

1
CREATE DATABASE demo;

指定字符集:

1
CREATE DATABASE demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

实际项目中更推荐使用 utf8mb4,避免 emoji 或部分特殊字符存储失败。

3. 删除数据库

1
DROP DATABASE demo;

这是高危操作,执行前务必确认。

4. 切换当前数据库

1
USE demo;

5. 查看当前使用的数据库

1
SELECT DATABASE();

三、表级常用命令

1. 查看当前数据库中的所有表

1
SHOW TABLES;

2. 查看建表语句

1
SHOW CREATE TABLE users\G
  • \G 表示纵向展示结果,适合查看较长内容。

3. 查看表结构

1
DESC users;

或者:

1
SHOW COLUMNS FROM users;

4. 查看表状态

1
SHOW TABLE STATUS LIKE 'users';

可以看到存储引擎、行数、更新时间等信息。

5. 重命名表

1
RENAME TABLE old_name TO new_name;

6. 删除表

1
DROP TABLE users;

7. 清空表数据

1
TRUNCATE TABLE users;

TRUNCATE 通常比 DELETE FROM users; 更快,但会重置自增主键,并且一般不能像普通删除那样逐行回滚。

四、数据查询与修改常用命令

1. 查询数据

1
SELECT * FROM users;

带条件查询:

1
2
3
4
5
SELECT id, name, email
FROM users
WHERE 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 users
SET email = 'new@example.com'
WHERE id = 1;

如果不带 WHERE,会更新整张表,生产环境中要特别小心。

4. 删除数据

1
2
DELETE FROM users
WHERE 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. 刷新权限

1
FLUSH PRIVILEGES;

在较新的 MySQL 版本里,很多场景下执行 GRANT 后会立即生效,但很多人仍习惯在权限变更后执行一次,便于确认。

6. 查看用户权限

1
SHOW GRANTS FOR 'dev'@'localhost';

7. 删除用户

1
DROP USER 'dev'@'localhost';

六、事务控制命令

如果使用的是支持事务的存储引擎(如 InnoDB),这些命令非常常见。

1. 开启事务

1
START TRANSACTION;

或者:

1
BEGIN;

2. 提交事务

1
COMMIT;

3. 回滚事务

1
ROLLBACK;

4. 设置保存点

1
SAVEPOINT sp1;

回滚到指定保存点:

1
ROLLBACK TO sp1;

七、索引与执行计划相关命令

1. 查看索引

1
SHOW INDEX FROM users;

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 版本

1
SELECT VERSION();

2. 查看服务器状态

1
SHOW STATUS;

查看某个特定状态项:

1
SHOW STATUS LIKE 'Threads_connected';

3. 查看系统变量

1
SHOW VARIABLES;

查看字符集相关配置:

1
SHOW VARIABLES LIKE 'character_set_%';

查看连接数相关配置:

1
SHOW VARIABLES LIKE 'max_connections';

4. 查看当前连接

1
SHOW PROCESSLIST;

如果信息被截断,可以使用:

1
SHOW FULL PROCESSLIST;

5. 杀掉连接

1
KILL 12345;

这里的 12345SHOW 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. 查看帮助

1
help

或者:

1
\h

2. 查看当前连接信息

1
status

或者:

1
\s

3. 清屏

1
system cls

如果是在 Linux/macOS 环境中,一般是:

1
system clear

4. 执行系统命令

1
system dir

5. 退出客户端

1
exit

或者:

1
quit

或者:

1
\q

十一、几个高频实用技巧

1. 用 \G 纵向显示结果

当查询结果字段很多时:

1
SELECT * FROM users WHERE id = 1\G

这样往往比横向表格更易读。

2. 先 SELECTUPDATE/DELETE

对于带条件的数据修改,建议先执行:

1
SELECT * FROM users WHERE id = 1;

确认无误后再执行更新或删除,避免误操作。

3. 关注字符集

新项目建库建表时,尽量统一使用 utf8mb4,以免后续出现乱码或字符无法保存的问题。

4. 生产环境谨慎使用高危命令

以下命令要格外小心:

  • DROP DATABASE
  • DROP TABLE
  • TRUNCATE TABLE
  • 不带 WHEREUPDATE
  • 不带 WHEREDELETE

最好先备份,再执行。

十二、速查清单

连接

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\G
TRUNCATE 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