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

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

这就是我正在做的事情:

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

无论我提供什么--port参数,该命令都会起作用(连接到端口 3306)。我在一台机器上运行了两个 mysql 服务器,并想通过明确提供其端口号来连接到第二个服务器。发生了什么?为什么mysql忽略这个参数?

答案1

localhost给定参数时,MySQL 使用套接字。请使用127.0.0.1

答案2

仅使用或检查与所选传输协议相关的连接选项。其他连接选项将被忽略。例如,在 Unix 上使用 --host=localhost 时,客户端会尝试使用 Unix 套接字文件连接到本地服务器,即使给出了 --port 或 -P 选项来指定 TCP/IP 端口号。

要确保客户端与本地服务器建立 TCP/IP 连接,请使用 --host 或 -h 指定主机名值 127.0.0.1(而不是 localhost),或本地服务器的 IP 地址或名称。您还可以使用 --protocol=TCP 选项明确指定传输协议,即使对于 localhost 也是如此。示例:

mysql --host=127.0.0.1

mysql --protocol=TCP

https://dev.mysql.com/doc/refman/8.0/en/connecting.html

相关内容