- mysql-proxy: MySQL HTTP 代理,连接池复用 - ssh-proxy: SSH HTTP 代理,会话复用 - mysql-cli: 轻量级 MySQL CLI 工具 功能特性: - 延迟初始化,启动快 - CLI 和 HTTP API 双模式 - 请求日志支持 - 错误友好提示 - JSON 极简输出格式
MySQL CLI (Rust)
💡 快速开始:运行
mysql --help查看完整使用文档
一个轻量级的 Rust 语言 MySQL 命令行工具,兼容 MySQL 官方客户端用法,可以在未安装 MySQL 客户端的系统中执行 SQL 语句。
功能特性
- ✅ 交互式模式:支持完整的 REPL 交互式 Shell
- ✅ 批量执行:支持从 SQL 文件执行多条语句
- ✅ 多种输出格式:支持表格、CSV、JSON、垂直格式
- ✅ 完整 SQL 支持:支持 SELECT、INSERT、UPDATE、DELETE 等所有 SQL 语句
- ✅ 特殊命令:支持 USE、SHOW、DESCRIBE、EXPLAIN 等 MySQL 命令
- ✅ 紧凑体积:编译后仅 2.5MB,无需安装 MySQL 客户端
编译
cargo build --release
使用方法
基本语法
./mysql.exe -h <host> -P <port> -u <username> -p <password> -D <database> -e "<SQL>"
参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
| -h | MySQL 主机地址 | 127.0.0.1 |
| -P | MySQL 端口 | 3306 |
| -u | 用户名 | root |
| -p | 密码 | (空) |
| -D | 数据库名 | (空) |
| -e | 要执行的 SQL 语句 | (可选) |
| -f | 从 SQL 文件执行 | (可选) |
| -F | 输出格式:table, csv, json, vertical | table |
| -o | 输出到文件 | stdout |
| -i | 强制进入交互模式 | (可选) |
注意:不指定 -e 或 -f 时,需要使用 -i 参数进入交互模式
使用示例
1. 交互式模式
进入交互式 Shell:
# 基本连接并进入交互模式
mysql -p123456 -i
# 指定主机和用户
mysql -h127.0.0.1 -uroot -p123456 -i
交互式命令:
use <database>- 切换数据库status- 显示连接状态source <file>- 执行 SQL 文件format <type>- 设置输出格式(table, csv, json, vertical)output <file>- 设置输出文件exit / quit- 退出程序
2. 直接执行 SQL
# 查询数据
mysql -h127.0.0.1 -uroot -p123456 -Dmydb -e "SELECT * FROM users LIMIT 10"
# 显示表结构
mysql -p123456 -Dmydb -e "DESCRIBE users"
# 显示所有数据库
mysql -p123456 -e "SHOW DATABASES"
# 插入数据
mysql -p123456 -Dmydb -e "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')"
# 更新数据
mysql -p123456 -Dmydb -e "UPDATE users SET email='new@email.com' WHERE id=1"
# 删除数据
mysql -p123456 -Dmydb -e "DELETE FROM users WHERE id=1"
3. 从 SQL 文件执行
# 执行 SQL 文件
mysql -p123456 -f script.sql
# 执行并输出到 CSV
mysql -p123456 -f script.sql -F csv -o result.csv
4. 不同输出格式
# CSV 格式
mysql -p123456 -e "SELECT * FROM users" -F csv
# JSON 格式
mysql -p123456 -e "SELECT * FROM users" -F json
# 垂直格式(适合字段较多的记录)
mysql -p123456 -e "SELECT * FROM users" -F vertical
项目结构
mysql-cli/
├── Cargo.toml # Rust 项目配置
├── README.md # 项目文档
└── src/
├── main.rs # 主程序入口
├── config.rs # 配置管理
├── db.rs # 数据库连接
├── executor.rs # SQL 执行引擎
└── repl.rs # 交互式 REPL
依赖
- Rust 1.70+
- mysql (25.x)
- clap (4.x) - 命令行参数解析
- rustyline (14.x) - 交互式 REPL
- serde / serde_json - JSON 序列化
- csv - CSV 输出
与 Go 版本对比
| 功能 | Rust 版本 | Go 版本 |
|---|---|---|
| 交互式模式 | ✅ | ✅ |
| SQL 文件执行 | ✅ | ✅ |
| 输出格式 | 表格/CSV/JSON/垂直 | 表格/CSV/JSON/垂直 |
| 二进制大小 | ~2.5MB | ~7.3MB |
| 内存占用 | 更低 | 较高 |
License
MIT