第 56.1 节:自定义 MySQL PS1 显示当前数据库

在 .bashrc 或 .bash_profile 中添加:

export MYSQL_PS1="\u@\h [\d]>"

使 MySQL 客户端的提示符显示 当前用户@主机 [数据库名]>。

[图片占位符]

第 56.2 节:通过 MySQL 配置文件自定义 PS1

在 my.cnf(或 mysqld.cnf)中:

[mysql]
prompt = '\u@\h [\d]>'

这样无需处理 .bashrc 即可实现类似效果。

第 56.3 节:两种方式的优先级(踩坑提醒)

如果 ~/.bashrc 和 my.cnf 里都写了,MYSQL_PS1 环境变量优先级更高,会覆盖配置文件里的 prompt。 如果你的 my.cnf 改完后不生效,请检查是否把 prompt 错写在了 [mysqld] 段落下(这是服务端配置,无效),必须写在 [mysql] 或 [client] 段落下。

第 56.4 节:加入 ANSI 颜色(高危环境必配)

默认文本在黑底白字下容易看花眼。强烈建议在提示符里加颜色,比如生产环境用红底白字,测试环境用绿字:

在 ~/.bashrc 中配置(使用 \e 转义):

# 生产环境(红色数据库名)
export MYSQL_PS1="\u@\h [\e[01;31m\]\d[\e[00m\]> "

# 测试环境(绿色数据库名)
export MYSQL_PS1="\u@\h [\e[01;32m\]\d[\e[00m\]> "

在 my.cnf 中同样支持:

[mysql]
prompt = '\u@\h [\e[01;32m\]\d[\e[00m\]> '

效果:当你 USE test_db; 时,数据库名会瞬间变绿/变红,极大降低“删库跑路”误操作的概率。

第 56.5 节:必加的“端口号”(多实例必备)

如果你在一台服务器上部署了多个 MySQL 实例(如 3306、3307),仅看 \h(主机名)无法区分。强烈建议加入 \P(端口):

export MYSQL_PS1="\u@\h:\P [\d]> "

这样提示符会变成 root@localhost:3307 [test_db]>,一目了然。

第 56.6 节:长查询时自动换行(提升体验)

如果 SQL 写得很长,提示符顶在最左边会让输出日志难以阅读。加入换行符 \n:

[mysql]
prompt = '\u@\h [\d]>\n-> '

这样输入多行 SQL 时,第二行会显示 ->,清晰区分输入行和输出结果。

第 56.7 节:临时动态修改(无需退出客户端)

如果不想重启客户端或重读配置,在 mysql> 命令行内直接执行:

PROMPT \u@\h [\d]> 

这条 SQL 命令会立即覆盖当前会话的提示符,测试颜色效果非常方便。