随机
Enter 搜索 ↑↓ 切换 Esc 清空

mysql

命令

MySQL客户端命令行工具

mysql

MySQL客户端命令行工具

补充说明

mysql 是MySQL数据库的客户端命令行工具,用于连接MySQL服务器并执行SQL语句。它是数据库管理员和开发者最常用的工具之一,支持交互式和批处理两种运行模式。

语法

mysql [OPTIONS] [database]

选项

-h, --host=name          # 连接的主机地址(默认localhost)
-P, --port=#             # 连接的端口号(默认3306)
-u, --user=name          # 连接的用户名
-p, --password[=name]    # 连接的密码(不推荐在命令行直接输入)
-D, --database=name      # 指定要使用的数据库
-e, --execute=name       # 执行SQL语句并退出
-B, --batch              # 批处理模式,输出以制表符分隔
-N, --skip-column-names  # 不显示列名
-s, --silent             # 静默模式,减少输出
-r, --raw                # 原始输出,不转义
--vertical               # 垂直显示结果(等同于\G)
--html                   # 以HTML格式输出
--xml                    # 以XML格式输出
--json                   # 以JSON格式输出
-i, --ignore-spaces     # 忽略函数名后的空格
--local-infile          # 启用LOAD DATA LOCAL功能
--max-allowed-packet=#  # 设置最大允许的数据包大小
--net-buffer-length=#   # 设置网络缓冲区大小
--protocol=name         # 使用的连接协议(tcp/socket/pipe/memory)
-S, --socket=name       # Unix套接字文件或Windows命名管道
--ssl-mode=name         # SSL连接模式
--ssl-ca=name           # SSL证书颁发机构文件
--ssl-cert=name         # SSL证书文件
--ssl-key=name          # SSL密钥文件
-v, --verbose           # 详细输出
-V, --version           # 显示版本信息
--help                  # 显示帮助信息

常用实例

# 连接本地MySQL服务器
mysql -u root -p

# 连接指定主机和端口
mysql -h 192.168.1.100 -P 3306 -u root -p

# 连接并指定数据库
mysql -u root -p -D mydb

# 直接执行SQL语句
mysql -u root -p -e "SHOW DATABASES;"
mysql -u root -p -e "SELECT * FROM users LIMIT 10;" mydb

# 执行多条SQL语句
mysql -u root -p -e "USE mydb; SELECT COUNT(*) FROM users;"

# 从文件执行SQL脚本
mysql -u root -p mydb < backup.sql

# 批处理模式输出(适合脚本处理)
mysql -u root -p -B -e "SELECT * FROM users" mydb

# 不显示列名
mysql -u root -p -N -e "SELECT name FROM users" mydb

# 垂直显示结果
mysql -u root -p -e "SELECT * FROM users" mydb --vertical

# JSON格式输出(MySQL 5.7+)
mysql -u root -p --json -e "SELECT * FROM users LIMIT 5" mydb

# HTML格式输出
mysql -u root -p --html -e "SELECT * FROM users" mydb > output.html

# 使用SSL连接
mysql -h remote.example.com -u root -p --ssl-mode=REQUIRED

# 导出查询结果到CSV
mysql -u root -p -B -e "SELECT * FROM users" mydb | tr '\t' ',' > users.csv

# 显示版本信息
mysql --version

# 通过Unix套接字连接
mysql -u root -p -S /var/run/mysqld/mysqld.sock

交互式命令

# 在mysql>提示符下的常用命令
help (\h)        # 显示帮助
clear (\c)       # 清除当前输入
connect (\r)     # 重新连接到服务器
delimiter (\d)   # 设置语句分隔符
edit (\e)        # 编辑命令(调用编辑器)
ego (\G)         # 发送命令并垂直显示结果
exit (\q)        # 退出mysql
go (\g)          # 发送命令到服务器
nopager (\n)     # 禁用分页器
pager (\P)       # 设置分页器(如less)
print (\p)       # 打印当前命令
prompt (\R)      # 更改提示符
quit (\q)        # 退出mysql
rehash (\#)      # 重建补全哈希
source (\.)      # 执行SQL脚本文件
status (\s)      # 显示服务器状态
system (\!)      # 执行系统命令
tee (\T)         # 设置输出文件(记录所有输出)
use (\u)         # 切换数据库
charset (\C)     # 切换字符集
warnings (\W)    # 显示警告
nowarning (\w)   # 不显示警告

实用技巧

# 安全地输入密码(不在命令行暴露)
mysql -u root -p
# 系统会提示输入密码

# 使用配置文件存储连接信息
# 在 ~/.my.cnf 文件中添加:
[client]
user = root
password = your_password
host = localhost

# 然后可以直接运行
mysql

# 显示执行的语句
mysql -u root -p -v -v -v < script.sql

# 将查询结果保存到文件
mysql -u root -p -e "SELECT * FROM users" mydb > output.txt

# 使用管道组合命令
echo "SELECT NOW()" | mysql -u root -p

# 监控MySQL状态
watch -n 1 'mysql -u root -p -e "SHOW PROCESSLIST"'

环境变量

MYSQL_UNIX_PORT    # Unix套接字文件路径
MYSQL_TCP_PORT     # TCP端口号
MYSQL_PWD          # 默认密码(不推荐使用)
MYSQL_DEBUG        # 调试选项
TMPDIR             # 临时文件目录