나는 두 가지를 가지고 있습니다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 -
답변1
문제는 서버가 내부적으로만 듣고 있다는 것이었습니다.
줄을 제거하면 bind-address 127.0.0.1
문제 /etc/mysql/my.cnf
가 해결되었습니다.
최신 버전의 Ubuntu(≥16.04)에는 /etc/mysql/mysql.conf.d/mysqld.cnf
.
답변2
내 제안은 포트가 닫혀 있다고 확신하는 경우(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 외부에서 실행해야 합니다.
netstat -tuplen
서버에 열려 있는 포트와 LISTEN 모드에 있는 포트를 확인하는 것도 좋은 생각입니다.
답변3
MySQL이 모든 포트에서 수신 대기하도록 in bind-address 127.0.0.1
으로 변경하여 이 문제를 해결했습니다 .bind-address 0.0.0.0
/etc/mysql/mysql.conf.d
또한 원격으로 사용할 mysql 사용자 계정을 설정했습니다. 자세한 내용은 다음을 참조하세요.호스트 'xxx.xx.xxx.xxx'는 이 MySQL 서버에 연결할 수 없습니다..
답변4
구성이 디렉토리에 있을 수 있습니다 /etc/mysql/mysql.conf.d/mysqld.cnf
. 그렇지 않은지 확인하십시오.