为什么 MySQL 命令行工具会忽略 --port 参数?

yeg*_*256 112 mysql port

这就是我正在做的:

mysql --host=localhost --port=9999 mysql -u root -p --execute="show tables;"
Run Code Online (Sandbox Code Playgroud)

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

HUB*_*HUB 196

localhost给定参数时,MySQL 使用套接字。使用127.0.0.1来代替。

  • 令人气愤的是,mysql 手册页上没有提到这个事实。 (19认同)
  • 你是一个救命的人! (3认同)
  • 哇,令人难以置信的是,这个疯狂的错误在 10 年后仍然存在。我想这对 Oracle 和 MariaDb 团队说了很多。需要明确的是:客户端实际上接受了端口命令,如果端口错误,它会抱怨,但它会忽略它并通过套接字连接。当我找到这个答案时,我开始调试二进制文件。 (3认同)
  • 除了这里接受的答案外,更多解释可以在这个 [mysql bugreport](https://bugs.mysql.com/bug.php?id=55796) 中找到,也可以链接到 [man page](https:// dev.mysql.com/doc/refman/5.7/en/connecting.html)。作为 bugreport 页面中的评论者之一,我也不明白为什么在连接字符串中使用“localhost”的情况下,客户端至少不会发出警告。 (2认同)