programing

Google Compute Engine VM에서 MySQL에 원격 연결

copysource 2022. 10. 11. 22:45
반응형

Google Compute Engine VM에서 MySQL에 원격 연결

저의 고민은 이 질문과 비슷하지만, 저는 코멘트를 쓸 만한 평판이 없고, 그 질문에 대한 답변도 도움이 되지 않기 때문에 새로운 질문을 시작합니다.

MySQL Ver 15.1 Distributed 10.1.18-MariaDB를 사용하는 LEMP를 사용하는 GCE VM 인스턴스가 있으며 로컬 시스템에서 원격으로 연결하려고 합니다.

아까 말씀드린 질문 링크에 있는 모든 제안들을 이미 시도해 보았습니다.

방화벽 설정은 다음과 같습니다.

여기에 이미지 설명 입력

my.cnf 파일에는 다음이 있습니다.

bind-address = 0.0.0

MySQL 사용자 권한에 대해 다음과 같은 권한이 있습니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

wkreport 사용자와 리모트로 접속하려고 하면 다음과 같은 결과가 나타납니다.

여기에 이미지 설명 입력

내 질문은, 내가 뭘 놓쳤느냐는 거야!

난 방금 내 문제에 대한 해결책을 찾았어

길을 가르쳐 준 @Slava에게 특별한 감사를 표합니다.결국 iptables였습니다.

그래서 리모트 접속을 시도했을 때 MySQL connection rejected 메시지가 계속 나타나 TCP 접속 로그를 볼 수 있는 방법을 검색했는데tcpdump명령어를 입력합니다.

실행 시sudo tcpdump port 3306 -vvv -n리모트 접속을 시도할 때마다 다음의 출력이 표시됩니다.

여기에 이미지 설명 입력

tcpdump man 페이지를 검색해 보니 R은 TCP RST(RESET) 플래그를 의미합니다.

조금 검색해서 이 질문을 찾았고, 그 대답을 받아들여서 다시 IPTAB에 들어가게 되었다.첫 번째 코멘트부터 @Slava가 제안한 LES.

그때 자세히 보니 REJECT TCP reject-with tcp-reset 규칙 뒤에 INPUT ACCEPT tcp:3306이 정의되어 있어 로그가 표시되어 있었습니다.

여기에 이미지 설명 입력

그 후 tcp:3306을 받아들이는 규칙을 삭제하고 reject tcp 규칙과 voila에 추가했습니다.

iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
iptables -I INPUT {line number from the first reject tcp rule} -p tcp -m tcp --dport 3306 -j ACCEPT

IPTABLES는 다음과 같이 표시되며, 마지막으로 MySQL에 원격으로 연결할 수 있습니다.

iptables 를 라인 번호와 함께 나열하려면 다음과 같이 입력합니다.

sudo iptables -nL --line-numbers

최종 과제:

  • 이것은, 시큐러티상의 리모트 접속을 확립하고 있는 소스 IP 주소를 화이트 리스트 하는 것으로 개선할 수 있습니다.

VM 인스턴스에서 비슷한 문제가 발생했습니다.저는 모든 것을 테스트했고, mysql에서 새로운 사용자를 생성함으로써 해결되었습니다.

이 글을 이용해서 해결했어요.

언급URL : https://stackoverflow.com/questions/42117446/remotely-connect-to-mysql-on-google-compute-engine-vm

반응형