MySQL CLI 命令

2 min入门

MySQL CLI 命令 的完整教学讲解。

连接登录

单行写法:本地连接 mysql -u <用户名> -p

# 交互式输入密码登录
mysql -u root -p

单行写法:指定密码连接 mysql -u <用户名> -p<密码>

# 直接在命令中带密码(不推荐,会泄露)
mysql -u root -pStrongPass123!

单行写法:连接远程主机 mysql -h <主机> -P <端口> -u <用户名> -p

# 连接远程 MySQL 服务器
mysql -h 192.168.1.100 -P 3306 -u appuser -p

单行写法:指定数据库连接 mysql -u <用户名> -p <数据库名>

# 登录后直接使用指定数据库
mysql -u root -p mydb

单行写法:通过 socket 连接 mysql -u <用户名> -p --socket=<socket路径>

# 指定 socket 文件连接
mysql -u root -p --socket=/tmp/mysql.sock

单行写法:使用配置文件连接 mysql --defaults-file=<配置文件>

# 使用配置文件中的连接信息
mysql --defaults-file=/etc/mysql/my.cnf

客户端命令

单行写法:查看帮助 mysql --help

# 查看 mysql 客户端帮助
mysql --help

单行写法:查看版本 mysql --version

# 查看 MySQL 客户端版本
mysql --version

单行写法:执行 SQL 后退出 mysql -u <用户> -p -e "<SQL语句>"

# 执行单条 SQL 并返回
mysql -u root -p -e "SELECT VERSION();"

单行写法:执行 SQL 文件 mysql -u <用户> -p <数据库> < <SQL文件>

# 执行脚本文件
mysql -u root -p mydb < /path/to/script.sql

单行写法:垂直显示结果 mysql -u <用户> -p -e "<SQL>" --vertical

# 以垂直方式显示宽结果
mysql -u root -p -e "SELECT * FROM users" --vertical

单行写法:表格输出 mysql -u <用户> -p -e "<SQL>" --table

# 表格形式输出结果
mysql -u root -p -e "SELECT id, name FROM users" --table

单行写法:批处理静默模式 mysql -u <用户> -p -s -N -e "<SQL>"

# 静默模式去除表格边框和列名
mysql -u root -p -s -N -e "SELECT username FROM users"

交互式命令

单行写法:查看所有数据库 SHOW DATABASES;

-- 列出所有数据库
SHOW DATABASES;

单行写法:选择数据库 USE <数据库名>;

-- 切换数据库
USE mydb;

单行写法:查看所有表 SHOW TABLES;

-- 列出当前库所有表
SHOW TABLES;

单行写法:查看表结构 DESC <表名>;

-- 查看表字段
DESC users;

单行写法:查看状态 STATUS;

-- 查看服务器状态
STATUS;

单行写法:清除当前输入 \c

-- 取消当前未完成的 SQL 输入
SELECT * FROM users\c

单行写法:退出客户端 exit; 或 quit;

-- 退出 mysql 客户端
exit;

单行写法:切换数据库快捷命令 \u <数据库名>

-- 快速切换数据库
\u mydb

单行写法:执行系统命令 \! <系统命令>

-- 在 mysql 客户端中执行系统命令
\! ls -la

单行写法:执行 SQL 文件 source <文件路径>; 或 \. <文件路径>

-- 在客户端中执行 SQL 文件
source /path/to/script.sql;

备份恢复

单行写法:导出数据库 mysqldump -u <用户> -p <数据库> > <文件>

# 导出整个数据库
mysqldump -u root -p mydb > mydb_backup.sql

单行写法:导出单张表 mysqldump -u <用户> -p <数据库> <表名> > <文件>

# 仅导出 users 表
mysqldump -u root -p mydb users > users_backup.sql

单行写法:导出多张表 mysqldump -u <用户> -p <数据库> <表1> <表2> > <文件>

# 导出多个表
mysqldump -u root -p mydb users orders > backup.sql

单行写法:导出所有数据库 mysqldump -u <用户> -p --all-databases > <文件>

# 导出全部数据库
mysqldump -u root -p --all-databases > all_backup.sql

单行写法:仅导出表结构 mysqldump -u <用户> -p --no-data <数据库> > <文件>

# 仅导出表结构不导出数据
mysqldump -u root -p --no-data mydb > schema.sql

单行写法:仅导出数据 mysqldump -u <用户> -p --no-create-info <数据库> > <文件>

# 仅导出数据不导出表结构
mysqldump -u root -p --no-create-info mydb > data.sql

单行写法:导入数据 mysql -u <用户> -p <数据库> < <文件>

# 从备份文件恢复数据
mysql -u root -p mydb < mydb_backup.sql

服务管理

单行写法:查看 MySQL 服务状态 systemctl status mysql

# 查看 MySQL 服务状态
systemctl status mysql

单行写法:启动 MySQL 服务 systemctl start mysql

# 启动 MySQL 服务
systemctl start mysql

单行写法:停止 MySQL 服务 systemctl stop mysql

# 停止 MySQL 服务
systemctl stop mysql

单行写法:重启 MySQL 服务 systemctl restart mysql

# 重启 MySQL 服务
systemctl restart mysql

单行写法:查看 MySQL 进程 mysqladmin -u <用户> -p processlist

# 查看当前 MySQL 进程列表
mysqladmin -u root -p processlist

单行写法:查看服务器状态 mysqladmin -u <用户> -p status

# 查看 MySQL 服务器状态
mysqladmin -u root -p status

配置与变量

单行写法:查看系统变量 SHOW VARIABLES LIKE '<模式>';

-- 查看字符集相关变量
SHOW VARIABLES LIKE 'character%';

单行写法:查看全局变量 SELECT @@global.<变量名>;

-- 查看全局最大连接数
SELECT @@global.max_connections;

单行写法:设置全局变量 SET GLOBAL <变量名> = <值>;

-- 设置最大连接数
SET GLOBAL max_connections = 500;

单行写法:查看会话变量 SELECT @@session.<变量名>;

-- 查看当前会话时区
SELECT @@session.time_zone;

单行写法:设置会话变量 SET SESSION <变量名> = <值>;

-- 设置会话时区
SET SESSION time_zone = '+08:00';

单行写法:查看状态信息 SHOW STATUS LIKE '<模式>';

-- 查看连接数
SHOW STATUS LIKE 'Threads%';

工具命令

单行写法:检查表 mysqlcheck -u <用户> -p --check <数据库>

# 检查数据库所有表
mysqlcheck -u root -p --check mydb

单行写法:修复表 mysqlcheck -u <用户> -p --repair <数据库>

# 修复数据库表
mysqlcheck -u root -p --repair mydb

单行写法:优化表 mysqlcheck -u <用户> -p --optimize <数据库>

# 优化数据库表
mysqlcheck -u root -p --optimize mydb

单行写法:分析表 mysqlcheck -u <用户> -p --analyze <数据库>

# 分析表更新统计信息
mysqlcheck -u root -p --analyze mydb

单行写法:查看慢查询日志 mysqldumpslow -s t -t <数量> <日志文件>

# 按耗时排序查看前 10 条慢查询
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log