![为什么MySQL命令行工具忽略--port参数?](https://linux22.com/image/560037/%E4%B8%BA%E4%BB%80%E4%B9%88MySQL%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7%E5%BF%BD%E7%95%A5--port%E5%8F%82%E6%95%B0%EF%BC%9F.png)
这就是我正在做的事情:
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