这就是我正在做的:

mysql --host=localhost --port=9999 mysql -u root -p --execute="show tables;"


无论我在--port参数中提供什么,命令都有效(连接到端口3306)。我有一台机器上运行着两个mysql服务器,并想通过显式提供其端口号连接到第二台mysql服务器。这是怎么回事?为什么mysql会忽略此参数?

#1 楼

当给出localhost参数时,MySQL使用套接字。请改用127.0.0.1

评论


令人气愤的是,在mysql手册页上没有提到这一事实。

–詹纳克
16年11月15日在15:56

除了此处可接受的答案外,在此mysql bugreport中还可以找到更多解释,并且还链接到手册页。作为bugreport页面中的评论者之一,我也不明白为什么客户端至少在连接字符串中使用'localhost'时不会发出警告。

–bukva-ziu
17 Mar 26 '17在8:51

你是个救命的人!

– Touqeer Shafi
17-10-17在11:56

我现在已经使用mysql十年了,但这还没有实现,但是...

–pscheit
17/12/26在20:25

哇,令人难以置信的是,这种疯狂的错误在10年后仍然存在。.我想这足以说明Oracle以及MariaDb团队。需要明确的是:客户端实际上是使用port命令的,它会抱怨端口是否错误,但是会忽略该端口,而是通过套接字进行连接。找到此答案后,我便开始调试二进制文件。

–约翰
19/12/20在4:23