如何让mysql客户端提示反映您所使用的服务器';重新连接到,而不是本地的

如何让mysql客户端提示反映您所使用的服务器';重新连接到,而不是本地的,mysql,my.cnf,Mysql,My.cnf,我有两台服务器——serverA和serverB,都有mysql服务器和mysql客户端。我有一个从serverB到serverA的反向SSH隧道,这样我就不必打开serverB到internet的端口。我从serverA访问serverB,方法是执行mysql--host 127.0.0.1--port 50003 如果我登录到serverA并执行mysql--host 127.0.0.1--port 3306我希望命令行提示符为me@serverA[dbname] 如果我登录到serverA

我有两台服务器——serverA和serverB,都有mysql服务器和mysql客户端。我有一个从
serverB
serverA
的反向SSH隧道,这样我就不必打开
serverB
到internet的端口。我从
serverA
访问
serverB
,方法是执行
mysql--host 127.0.0.1--port 50003

如果我登录到serverA并执行
mysql--host 127.0.0.1--port 3306
我希望命令行提示符为
me@serverA[dbname]

如果我登录到serverA并执行
mysql--host 127.0.0.1--port 50003
我希望命令行提示符为
me@serverB[dbname]

对于这些示例,我总是登录到
serverA
,并将mysql客户端连接到
serverA
serverB

serverA
serverB
上使用
/etc/my.cnf
中的
提示符
指令, 如果我这样做

然后我得到
me@127.0.0.1[dbname]
在它们两个上

如果我执行
prompt=\u@serverA[\d]
在服务器A和
提示符=\u@serverB[\d]
在服务器B上,然后我得到
me@serverA[dbname]
我是否尝试连接到
serverA
serverB

因此,无论我实际连接到什么,命令提示符似乎都会在
serverA
上拾取服务器的详细信息


有没有办法让提示反映我实际连接到的内容

提示设置是一个客户端选项。对于来自
serverA
的连接,唯一重要的配置文件是
serverA
上的配置文件。在两个连接的提示中看到
127.0.0.1
的原因是,从客户端的角度来看,两个连接都连接到127.0.0.1

MySQL客户机提供了一种指定选项组(命令行参数)的机制,您可以使用该机制来近似查找的内容。作为您需要的示例,您可以将以下内容添加到
~/.my.cnf
文件中:

[clientserverA]
prompt = \u@serverA [\d]>
host = 127.0.0.1

[clientserverB]
prompt = \u@serverB [\d]>
host = 127.0.0.1
port = 50003
使用此选项,您可以使用
MySQL--defaults group suffix=serverA
MySQL--defaults group suffix=serverB
连接到MySQL。客户端将根据您提供的后缀使用适当的主机、端口和提示符进行连接


如果不想全部键入,可以创建一个带后缀的shell函数并创建相应的命令行。

这并不能解决所写的问题,但如果希望提示符不同的原因只是为了区分两个连接,则可以在提示符中包含端口
prompt=\u@\h:\p[\d]
应该可以工作。端口可以工作,但不以--skip slave start开头,两台服务器是相同的,因此需要在本地连接到它。似乎是客户端设置。也许您可以尝试从命令行
mysql--prompt=“\u@\h[\d]>”--host--端口…
[clientserverA]
prompt = \u@serverA [\d]>
host = 127.0.0.1

[clientserverB]
prompt = \u@serverB [\d]>
host = 127.0.0.1
port = 50003