如何使mysql客户端提示符反映您所连接的服务器,而不是本地服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使mysql客户端提示符反映您所连接的服务器,而不是本地服务器相关的知识,希望对你有一定的参考价值。

我有2台服务器-serverA和serverB,都具有mysql服务器和mysql客户端。我有一个从serverBserverA的反向SSH隧道,因此我不必打开server B上的端口即可访问互联网。我通过执行serverB

serverA访问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客户端连接到serverAserverB

使用prompt/etc/my.cnfserverA中的serverB指令,如果我这样做

[mysql]
prompt = u@h [d]

然后我俩都得到了me@127.0.0.1 [dbname]

如果我在服务器A上执行prompt = u@serverA [d],在服务器B上执行prompt = u@serverB [d],则无论我要连接到me@serverA [dbname]还是serverA,我都会得到[C0

因此,无论我实际连接的是什么,命令提示符似乎都在serverB上获取服务器的详细信息。

有什么方法可以使提示反映我实际连接的对象?

答案

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

MySQL客户端提供了一种用于指定选项组的机制(命令行参数127.0.0.1),您可以使用它来近似您要寻找的内容。作为满足您需求的示例,您可以将以下内容添加到--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。客户端将根据您提供的后缀使用适当的主机,端口和提示进行连接。

如果您不想全部输入,则可以创建一个带后缀的shell函数并创建适当的命令行。

以上是关于如何使mysql客户端提示符反映您所连接的服务器,而不是本地服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何在客户端连接MySQL服务呢???

如何在客户端连接MySQL服务呢???

阿里云ECS服务器创建的数据库如何使远程服务器能连接?

Native for MySQL 客户端连接MySQL8 提示10061错误解决方案

Mysql授权允许远程访问解决Navicat for MySQL连接mysql提示客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端

远程连接mysql时,提示“is not allowed to connect to this MySQL server”的解决方法