programing

MySQL 클라이언트가 내가 지정한 포트를 사용하지 않는 이유는 무엇입니까?

nicescript 2023. 2. 2. 21:26
반응형

MySQL 클라이언트가 내가 지정한 포트를 사용하지 않는 이유는 무엇입니까?

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.

localhostMySQL에는 특별한 의미가 있습니다.IP 주소 127.0.0.1에서는 해결되지 않습니다(그 패턴에 정통한 것으로 상정할 수 있습니다).

동작은 MySQL 참조 매뉴얼에 기재되어 있습니다.

https://dev.mysql.com/doc/refman/5.7/en/connecting.html에서 발췌하다

Unix에서 MySQL 프로그램은 호스트 이름 localhost를 다른 네트워크 기반 프로그램과 비교하여 예상하는 것과 다른 방식으로 특별히 처리합니다.localhost 접속의 경우 MySQL 프로그램은 Unix 소켓파일을 사용하여 로컬서버로의 접속을 시도합니다.포트 번호를 지정하기 위해 --port 또는 -P 옵션이 지정된 경우에도 이 문제가 발생합니다.클라이언트가 로컬서버에 TCP/IP 접속을 확립하려면 --host 또는 -h를 사용하여 호스트명값 127.0.0.1 또는 로컬서버의 IP 주소 또는 이름을 지정합니다.또한 --localhost를 사용하여 연결 프로토콜을 명시적으로 지정할 수도 있습니다.TCP 옵션예를 들어 다음과 같습니다.

스펜서가 쓴 것처럼 기본적으로 소켓 연결을 사용합니다.

다음과 같이 TCP 를 강제적으로 실행할 수 있습니다.

mysql -u root -p --port=3306 --protocol=TCP

언급URL : https://stackoverflow.com/questions/50160128/why-wont-mysql-client-use-the-port-i-specify

반응형