우분투 서버에서 포트 3306이 닫혀있는 것 같습니다


33

두 대의 VPS 서버가 있고 둘 다 테스트 용 서버와 개발 용 MySQL을 설치했습니다. 내 서버 중 하나에서 외부에서 연결할 수 없습니다. 사용자와 함께;

'mytestuser'@ '%'

열린 포트 파인더 에 따르면 문제가되는 서버의 포트 3306이 닫혀있는 것으로 보입니다. 문제없이 임의의 포트에서 청취하는 C ++ 및 Java 프로그램이 있습니다. 왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?

설치된 Ubuntu는 Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)입니다.

netstat -tuple각 서버의 결과

위반 서버

tcp        0      0 localhost.lo:submission *:*                     LISTEN      root       39967664    -

작업 서버

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -

답변:


75

문제는 서버가 내부적으로 만 듣고 있다는 것입니다.

라인 bind-address 127.0.0.1을 제거하면 /etc/mysql/my.cnf문제 가 해결되었습니다.

최신 버전의 Ubuntu (≥16.04)에는이 줄이있을 수 있습니다 /etc/mysql/mysql.conf.d/mysqld.cnf.


2
이것은 나를 위해 일했습니다. 올바른 파일 이름은 /etc/mysql/my.cnf아닙니다 /etc/mysql/my.conf.
래리 배틀

서버의 외부 IP 주소와 일치하도록 바인드 주소를 변경했으며 저에게 효과적이었습니다.
Butkus

라인을 완전히 제거하면 서버는 모든 인터페이스를 수신합니다
s1mmel

내 하루를 구하고 몇 주 동안이 문제를 해결하려고 노력했습니다. 감사합니다!
budiantoip의

9

내 제안, 포트가 닫혀 있다고 확신한다면 (VPS가 해당 포트를 닫은 것이 이상하다고 생각합니다) 다른 구성 파일을 사용하도록 MySQL의 구성 파일을 변경하는 것입니다.

터미널에서 구성 파일을 열고 섹션을 sudo nano /etc/mysql/mysql.conf찾으십시오 [mysqld]. 그 안에있는 줄을 찾으십시오 port = 3306. 사용하지 않는 다른 포트로 변경하고 파일을 저장하십시오.

그런 다음 VPS를 다시 시작하거나 서비스를 다시 시작하십시오 sudo service mysql restart.

mysql.conf위에서 언급 한 파일에 파일 이 없으면 다른 곳에있을 수 있습니다.

/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf

만약 service명령이 작동하지 않습니다, 다음을 수행하십시오

sudo /etc/init.d/mysql restart

문제가 지속되면 내 경우에는 iptables (옵션이 될 수 있으면 새로 시작하기 위해 iptables의 모든 항목을 실제로 삭제합니다) 또는 다른 방화벽 사용 옵션을 확인합니다.

VPS이므로 포트를 차단할 수있는 옵션이 있는지 VPS 제어판을 확인합니다.

그 외에도 nmapVPS를 실행 하여 어떤 포트를 열 었는지 확인할 수 있습니다. 어떤 포트가 열려 있는지 보려면 VPS 외부에서 VPS를 실행해야합니다.

netstat -tuplen 또한 서버에서 열린 포트와 LISTEN 모드에있는 포트를 확인하는 것이 좋습니다.


이봐, 나는 다른 포트에서 시도했지만 여전히 그리워 보이지만 'iptables -A INPUT -i eth0 -p tcp -m tcp --dport PORT -j ACCEPT'도 시도했지만 운이 없다 :( .. eth0 .. 아직 희망이 있을지 모른다
Andy

@Andy 제안을 더 포함하도록 답변이 업데이트되었습니다.
Luis Alvarado

루이스 내가 이것에 대해 살펴볼 제안에 감사드립니다.
Andy

netstat -tuple의 결과를 질문으로 업데이트했습니다. 여기에 문제가있는 것 같습니다.
Andy


6

이 방법을 사용합니다.

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

다른 구성 파일을 변경할 필요가 없으며 기본적으로 추가 포트가 열리지 않아도됩니다.


sudo ufw allow 3306/tcp편집하려고했지만 내버려 두지 않았습니다
Adam

1

구성이 디렉토리 /etc/mysql/mysql.conf.d/mysqld.cnf에있을 수 있습니다. 그렇지 않은지 확인하십시오.


1
이것을보기 전에 3 시간 정도 알아 내려고 노력했습니다. 감사합니다!
Oliver Ni
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.