MySQL 中的 prompt 参数(或称 prompt 命令)用于自定义 MySQL 客户端(mysql 命令行工具)的提示符(Prompt)。
一、基本概念
1.1 什么是 prompt?
在 MySQL 命令行客户端中,默认提示符为:
mysql>
通过设置 prompt,可以修改该提示符的显示内容,使其包含数据库名、用户名、主机名、连接 ID 等动态信息。
1.2 设置方式
-
启动时设置 :通过命令行参数
--prompt="..."。bashmysql --prompt="\\u@\\h [\\d]> " -
运行时设置 :在 MySQL 客户端中使用
prompt命令。sqlprompt \u@\h [\d]> -
配置文件设置 :在
my.cnf或my.ini的[mysql]段落中添加:ini[mysql] prompt = "\\u@\\h [\\d]> "
二、prompt 支持的转义序列
MySQL 提供了一组以反斜杠(\)开头的特殊字符,用于动态插入上下文信息:
| 转义序列 | 含义 |
|---|---|
\c |
当前语句中的命令计数(从 1 开始) |
\d |
当前数据库(若未选择则为空) |
\h |
连接的服务器主机名(或 IP) |
\l |
当前连接的端口号(仅在 TCP/IP 连接时有效) |
\m |
分钟(00--59) |
\n |
换行符 |
\o |
小时(24 小时制,00--23) |
\p |
AM/PM 标记(与 \O 配合使用) |
\P |
大写 AM/PM |
\r |
小时(12 小时制,01--12) |
\R |
小时(24 小时制,00--23) |
\s |
秒(00--59) |
\S |
秒(带小数,如 30.123) |
\t |
制表符 |
\u |
当前用户名 |
\v |
MySQL 服务器版本 |
\w |
星期几(1=Monday, ..., 7=Sunday) |
\Y |
四位年份(如 2026) |
\y |
两位年份(如 26) |
\D |
日期(格式:Mon Jan 12) |
\T |
时间(24 小时制,HH:MM:SS) |
\U |
完整用户名(格式:user@host) |
\x |
连接 ID(线程 ID) |
\_ |
空格 |
\\ |
反斜杠本身 |
注意:在配置文件或 shell 命令行中,由于 shell 会解释反斜杠,通常需要使用双反斜杠(
\\)进行转义。
三、典型应用场景与示例
3.1 区分环境(开发/测试/生产)
sql
prompt [\h:\d] \u>
-- 示例输出:[prod-db:finance] admin>
便于快速识别当前连接的是哪个环境,防止在生产库误操作。
3.2 显示连接 ID(用于调试或 kill 会话)
sql
prompt [\x] \u@\h:\d>
-- 输出:[42] root@localhost:mysql>
当需要排查慢查询或 kill 会话时,可直接看到当前会话 ID。
3.3 时间戳提示(用于性能观察)
sql
prompt [\T] \u@\h>
-- 输出:[14:30:22] root@localhost>
结合 SHOW PROCESSLIST 或日志,可辅助判断执行时间。
3.4 多用户/多实例管理
同时管理多个 MySQL 实例时,清晰的提示符可避免混淆。
四、高级技巧与注意事项
4.1 动态切换提示符
可在会话中多次使用 prompt 命令切换风格:
sql
prompt DEV>
-- 后续提示符变为 DEV>
prompt PROD[\d]>
-- 变为 PROD[db]>
4.2 避免特殊字符冲突
提示符中若包含 $、#、> 等 shell 特殊字符,需注意是否影响终端行为(一般无影响,因在 MySQL 客户端内部处理)。
4.3 与 .my.cnf 安全结合
建议将常用 prompt 写入用户主目录的 .my.cnf 文件:
ini
[mysql]
prompt = "\\u@\\h [\\d] \\R:\\m:\\s> "
这样每次登录自动生效,且不影响他人。
4.4 不支持颜色(原生)
MySQL 原生命令行客户端 不支持 ANSI 颜色转义 。若需彩色提示符,需借助外部工具(如 rlwrap + 自定义脚本)或使用第三方客户端(如 mycli)。
五、总结
| 维度 | 内容 |
|---|---|
| 作用 | 提升交互体验、增强上下文感知、防止误操作 |
| 灵活性 | 支持多种动态变量(用户、库、主机、时间、连接ID等) |
| 配置方式 | 命令行参数、运行时命令、配置文件 |
| 适用人群 | DBA、开发人员、运维工程师 |
| 局限性 | 不支持颜色、不支持复杂逻辑(如条件判断) |
| 最佳实践 | 在 .my.cnf 中预设清晰、简洁、信息丰富的 prompt |
✅ 推荐默认配置:
ini[mysql] prompt = "\\u@\\h [\\d] \\R:\\m> "输出效果:
root@localhost [test] 14:30>
MySQL 官方文档:mysql --- The MySQL Command-Line Client