MySQL CLI 命令
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