두 대의 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 -
답변
문제는 서버가 내부적으로 만 듣고 있다는 것입니다.
라인 bind-address 127.0.0.1
을 제거하면 /etc/mysql/my.cnf
문제 가 해결되었습니다.
최신 버전의 Ubuntu (≥16.04)에는이 줄이있을 수 있습니다 /etc/mysql/mysql.conf.d/mysqld.cnf
.
답변
내 제안, 포트가 닫혀 있다고 확신한다면 (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 제어판을 확인합니다.
그 외에도 nmap
VPS를 실행 하여 어떤 포트를 열 었는지 확인할 수 있습니다. 어떤 포트가 열려 있는지 보려면 VPS 외부에서 VPS를 실행해야합니다.
netstat -tuplen
또한 서버에서 열린 포트와 LISTEN 모드에있는 포트를 확인하는 것이 좋습니다.
답변
in 으로 변경 하여이 문제 bind-address 127.0.0.1
를 해결 bind-address 0.0.0.0
했습니다 /etc/mysql/mysql.conf.d
(MySQL이 모든 포트에서 수신 대기하도록).
또한 원격으로 사용할 mysql 사용자 계정을 설정했습니다 ( https://stackoverflow.com/a/24171107/132374 참조 ).
답변
이 방법을 사용합니다.
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
다른 구성 파일을 변경할 필요가 없으며 기본적으로 추가 포트가 열리지 않아도됩니다.
답변
구성이 디렉토리 /etc/mysql/mysql.conf.d/mysqld.cnf
에있을 수 있습니다. 그렇지 않은지 확인하십시오.