Files
rust-work/mysql-cli/README.md
绝尘 11203f036f 新增: MySQL/SSH 代理工具
- mysql-proxy: MySQL HTTP 代理,连接池复用
- ssh-proxy: SSH HTTP 代理,会话复用
- mysql-cli: 轻量级 MySQL CLI 工具

功能特性:
- 延迟初始化,启动快
- CLI 和 HTTP API 双模式
- 请求日志支持
- 错误友好提示
- JSON 极简输出格式
2026-03-19 14:03:12 +08:00

3.7 KiB
Raw Permalink Blame History

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