如何使 mysql 客户端提示反映您连接的服务器,而不是本地服务器
How to make mysql client prompt reflect the server you're connected to, not local one
我有 2 个服务器 - serverA 和 serverB,都有 mysql 服务器和 mysql 客户端。我设置了一个从 serverB
到 serverA
的反向 SSH 隧道,这样我就不必打开 server B
上的端口到互联网。我通过 mysql --host 127.0.0.1 --port 50003
从 serverA
访问 serverB
如果我登录到 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
中的 prompt
指令,
如果我这样做
[mysql]
prompt = \u@\h [\d]
然后我在他们两个上得到 me@127.0.0.1 [dbname]
。
如果我在服务器 A 上执行 prompt = \u@serverA [\d]
并在服务器 B 上执行 prompt = \u@serverB [\d]
,那么无论我尝试连接到 serverA
还是 [=12=,我都会得到 me@serverA [dbname]
]
所以看起来命令提示符正在获取 serverA
上服务器的详细信息,而不管我实际连接的是什么。
有什么方法可以让提示反映我实际连接的内容吗?
prompt
设置是客户端选项。对于来自 serverA
的连接,唯一重要的配置文件是 serverA
上的配置文件。您在两个连接的提示中看到 127.0.0.1
的原因是,从客户端的角度来看,两个连接都连接到 127.0.0.1.
MySQL 客户端提供了一种指定选项组的机制(命令行参数 --default-groups-suffix),您可以使用它来近似查找您要查找的内容。作为您需要的示例,您可以将以下内容添加到您的 ~/.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 函数,如果您不想全部输入,则可以创建适当的命令行。
我有 2 个服务器 - serverA 和 serverB,都有 mysql 服务器和 mysql 客户端。我设置了一个从 serverB
到 serverA
的反向 SSH 隧道,这样我就不必打开 server B
上的端口到互联网。我通过 mysql --host 127.0.0.1 --port 50003
serverA
访问 serverB
如果我登录到 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
中的 prompt
指令,
如果我这样做
[mysql]
prompt = \u@\h [\d]
然后我在他们两个上得到 me@127.0.0.1 [dbname]
。
如果我在服务器 A 上执行 prompt = \u@serverA [\d]
并在服务器 B 上执行 prompt = \u@serverB [\d]
,那么无论我尝试连接到 serverA
还是 [=12=,我都会得到 me@serverA [dbname]
]
所以看起来命令提示符正在获取 serverA
上服务器的详细信息,而不管我实际连接的是什么。
有什么方法可以让提示反映我实际连接的内容吗?
prompt
设置是客户端选项。对于来自 serverA
的连接,唯一重要的配置文件是 serverA
上的配置文件。您在两个连接的提示中看到 127.0.0.1
的原因是,从客户端的角度来看,两个连接都连接到 127.0.0.1.
MySQL 客户端提供了一种指定选项组的机制(命令行参数 --default-groups-suffix),您可以使用它来近似查找您要查找的内容。作为您需要的示例,您可以将以下内容添加到您的 ~/.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 函数,如果您不想全部输入,则可以创建适当的命令行。