gpt4 book ai didi

mysql - 为什么 MySQL 客户端不使用我指定的端口?

转载 作者:行者123 更新时间:2023-12-03 18:12:45 25 4
gpt4 key购买 nike

我正在测试连接问题并测试了 JDBC URL 中指定的端口 3307。它起作用了,所以我认为它在那个端口上。然后我看到默认端口是 3306 并尝试了随机端口,它仍然有效。我预计它会失败。为什么会忽略命令行上的端口?

$ mysql -u root --port 999 -h localhost gb
MariaDB [gb]> SHOW VARIABLES WHERE Variable_name = 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |

$ mysql --version
mysql Ver 15.1 Distrib 10.1.30-MariaDB, for CYGWIN (i686) using EditLine wrapper

我也试过 -P 999它奏效了。

最佳答案

它忽略了端口,因为它使用的是本地套接字连接,而不是 TCP/IP 连接。那是因为主机被指定为 localhost .
localhost在 MySQL 中具有特殊意义。它不会解析为 IP 地址 127.0.0.1(根据我们对该模式的熟悉程度,我们可能会期望它。)

行为记录在 MySQL 引用手册中...

摘自 https://dev.mysql.com/doc/refman/5.7/en/connecting.html

On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given to specify a port number. To ensure that the client makes a TCP/IP connection to the local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP address or name of the local server. You can also specify the connection protocol explicitly, even for localhost, by using the --protocol=TCP option. For example:

关于mysql - 为什么 MySQL 客户端不使用我指定的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com