使用 MySQL 客户端自带的补全功能 (推荐,最简单)
从 MySQL 5.7.8 版本开始,官方的 MySQL 命令行客户端 (mysql) 就内置了强大的自动补全功能,包括关键字、数据库名、表名、列名等。

如何启用和配置
-
启动 MySQL 客户端时启用 最简单的方法是在登录时使用
-A或--auto-rehash选项。# -A 或 --auto-rehash mysql -u your_username -p -A
注意:
-A选项会让客户端在启动时读取所有数据库名、表名和列名等信息,如果数据库对象非常多,启动会稍微慢一点,但这是“一劳永逸”的方式。 -
在客户端运行时启用 如果你已经登录了,但补全功能没开启,可以执行以下命令:
-- 查看当前补全状态 \s -- 如果看到 auto-rehash: OFF,可以执行以下命令开启 \rehash
注意:
\rehash只会读取当前数据库中的表和列名,要读取所有数据库,需要先use一个数据库,再执行\rehash,或者退出后用-A参数重新登录。
(图片来源网络,侵删)
如何使用补全功能
一旦启用,补全功能就会自动工作。
-
补全关键字 (如
SELECT,FROM,WHERE) 输入关键字的前几个字母,然后按 Tab 键。sel<Tab> --> SELECT fr<Tab> --> FROM wh<Tab> --> WHERE
-
补全数据库名 在
use命令后,按 Tab 键会列出所有数据库名。mysql> use <Tab> information_schema mydb performance_schema sys mysql> use mydb
-
补全表名 在数据库名后、或在
FROM,JOIN,UPDATE,DESCRIBE等关键字后,按 Tab 键会列出当前数据库的所有表名。
(图片来源网络,侵删)mysql> SELECT * FROM <Tab> users products orders mysql> DESCRIBE <Tab> users products orders
-
补全列名 这是它最强大的地方,在表名后,输入 然后按 Tab 键,会列出该表的所有列名。
mysql> SELECT * FROM users.<Tab> id email name created_at mysql> SELECT users.name, users.<Tab> id email name created_at
-
补全存储过程/函数名 和表名类似,在
CALL或SELECT后按 Tab 键。 -
查看可用选项 在输入不完整的关键字后,连续按两次 Tab 键,会列出所有可能的补全选项。
mysql> SELECT <Tab><Tab> -- 会列出所有可用的列名(如果前面有表名)或所有关键字
使用 rlwrap 实现更强大的命令行历史和补全
mysql 客户端的默认终端体验比较基础,没有方向键上下翻历史、没有行内编辑等功能。rlwrap 是一个“ readline 包装器”,可以为任何命令行程序添加这些功能,包括更好的补全。
安装 rlwrap
在基于 Debian/Ubuntu 的系统上:
sudo apt-get update sudo apt-get install rlwrap
在基于 RedHat/CentOS 的系统上:
sudo yum install rlwrap # 或者对于较新的系统 sudo dnf install rlwrap
使用 rlwrap 启动 MySQL
只需在 mysql 命令前加上 rlwrap 即可。
# 使用 rlwrap 启动,并启用 MySQL 自身的补全功能 (-A) rlwrap -A -i -s 30000 -H ~/.mysql_history mysql -u your_username -p
参数解释:
-A: 启用 MySQL 的自动补全功能。-i: 忽略大小写进行补全,体验更好。-s 30000: 设置历史记录文件大小。-H ~/.mysql_history: 指定历史记录文件,这样你下次启动时仍然可以看到之前的命令。
rlwrap 带来的额外功能
- 方向键上下翻历史:按 可以找到上一条命令,按 可以找到下一条命令。
- Ctrl+R 反向搜索历史:按下
Ctrl+R然后输入关键词,可以搜索历史命令。 - 行内编辑:可以使用
Ctrl+A(行首),Ctrl+E(行尾),Ctrl+U(删除光标前所有内容) 等标准快捷键。 - Tab 补全:除了 MySQL 自身的补全,rlwrap 还提供文件名补全等。
使用 MySQL Shell (MySQL Shell)
对于现代化的数据库管理和开发,MySQL Shell 是官方推荐的工具,它不仅功能强大,而且其 JavaScript 和 Python 模式下的补全功能非常智能和强大。
安装 MySQL Shell
请从 MySQL 官方下载页面 下载并安装。
使用 MySQL Shell 的补全功能
启动 MySQL Shell:
mysqlsh
连接到 MySQL 服务器:
\sql # 切换到 SQL 模式,也可以直接使用 \connect root@localhost \connect your_user@your_host
补全功能示例:
-
补全对象:输入对象名的一部分,按 Tab 键。
MySQL localhost:33060+ ssl SQL > USE mydb; MySQL localhost:33060+ mydb SQL > SEL<Tab> --> SELECT MySQL localhost:33060+ mydb SQL > SELECT * FROM <Tab> users products orders MySQL localhost:33060+ mydb SQL > SELECT users.<Tab> id email name created_at
-
智能提示:MySQL Shell 会根据上下文提供智能提示,在
WHERE子句中输入列名后,它会提示可能的数据类型或函数。 -
代码补全:在 JavaScript 模式下,对于全局对象和 API 也有很好的补全。
MySQL localhost:33060+ mydb JS > db.<Tab> -- 会列出 db 对象的所有可用方法,如 db.createCollection(), db.getCollection() 等
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| MySQL 客户端内置补全 | - 无需额外安装 - 功能强大,覆盖关键字、表、列等 - 官方原生支持 |
- 终端体验基础(无历史翻页等) - 启动时可能稍慢 |
日常开发和简单管理,是最直接、最推荐的方式。 |
| rlwrap 包装 | - 拥有完美的命令行体验(历史、搜索、编辑) - 可以增强 MySQL 客户端的功能 |
- 需要额外安装 rlwrap- 增加了一层包装,可能有极微小性能开销 |
重度终端用户,追求极致的命令行操作体验和效率。 |
| MySQL Shell | - 现代化、功能强大 - 支持多语言模式 (JS/SQL/Py) - 智能提示和 API 补全 - 可用于 DBA 和开发者 |
- 需要学习新工具 - 占用资源相对多一些 |
高级用户、DBA、开发者,特别是需要编写脚本或进行复杂数据库管理时。 |
给新手的建议:
直接使用 mysql -u your_username -p -A 登录,这是最简单、最直接、官方推荐的方式,能满足 95% 以上的补全需求,当你觉得缺少命令历史翻页等功能时,再考虑安装 rlwrap。
