khstar

AWS RDS의 mysql SQLException 처리 본문

개발

AWS RDS의 mysql SQLException 처리

khstar 2020. 5. 28. 00:07
반응형

이번에 오래 묵혀있던 서버를 살리는 작업을 하는데 기존에 잘 돌던 것이 RDS 연결이 되지 않고 계속 예외가 발생하고 있다.

이 글은 정확한 처리는 아니고 막~~ 이것저것 하다가 처리된 문제라 참고 정도만 해주세요. ㅜㅜ 즉 정확하지 않습니다.

 

첫번째 발생한 오류는 다음과 같습니다.

java.sql.SQLException: null,  message from server: "Host '<IP>' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"

 

내용상으로는 connection error가 많이 발생하여 더 이상 연결할 수 없다는 것입니다.

보통은 mysql이라면 root 계정으로 로그인하여 flush hosts를 초기화 시켜주면 됩니다.

그런데 이놈의 RDS는 root 계정으로 로그인이 안됩니다.(방법이 있는데 제가 못하는 건지 아니면 제가 가진 정보가 제한적 이었던건진 모르겠습니다.) 

 

일단 무작정 뒤져서 다음의 명령어를 찾았습니다.

mysqladmin -h <HOST>-P <PORT> -u <USER> -p flush-hosts

HOST : RDS 인스턴스의 엔드포인트 

PORT : 포트

USER : mysql 계정

 

저기의 USER를 그냥 일반 유저(이 계정의 권한을 누가 줬는지는 모르겠지만 유일한 사용자였습니다.)

그런데 이 명령어를 실행하면 다음과 같은 에러가 발생합니다.

 

Error: Access denied; you need the RELOAD privilege for this operation

내용 상으로는 RELOAD 권한이 없다는 내용입니다. 이런 된장 ㅜㅜ 뒤져보니 RDS에서 Super권한 행사하는 방법이 있습니다.

RDS의 파라미터 그룹에 log_bin_trust_function_creators1로 변경해 주면 된다고 합니다.

파라미터 그룹에 내용이 없으면 추가하시면 됩니다.

 

이렇게 해주고 EC2 인스턴스 재시작 해주고 RDS를 재시작 해주고 했지만 계속 같은 에러가 발생했습니다.

그런데 이상하게도 하룻밤 자고 다시 시작을 해주니 이번엔 다른 에러가 발생했습니다. ㅜㅜ

 

Exception 스택에는 다양한 예외가 발생하는데 내용중에 

Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateExpiredException:

예외가 있습니다. 

 

RDS 화면을 보니 왼쪽 메뉴에 Certification Update에 뱃지가 표시되어 있어서 Update를 해주었습니다.(이 부분은 처리된 후라 캡쳐를 못했습니다.)

아마도 다음과 같은 내용을 보실수 있습니다. Amazon SSL/TLS 인증서의 만료로 Update해주어야 한다는 것입니다.

이 운영이 한참 오랜만에 부탁을 받아서 살리는 거라 어떤걸 누가 어떻게 손댓는지 알 수 없어서 설정은 변경하고 싶지 않았는데 

어쩔수 없이 제가 Update처리를 해봤습니다.

그랬더니~~ 짜잔~~ DB에 잘 붙어줍니다. ㅜㅜ 감격..

이 부분은 datasouce.url의 옵션에 useSSLfalse로 해줘도 붙었습니다.

 

항상 그렇지만 제 글은 두서가 없는데 오늘은 기록이 뒤죽박죽이라 더 두서가 없네요.

참고용으로 봐주세요.

 

그럼 이만 

 

참고 : 

https://m.blog.naver.com/PostView.nhn?blogId=jjijilx2&logNo=221147431525&proxyReferer=https:%2F%2Fwww.google.com%2F

https://chartio.com/resources/tutorials/how-to-run-mysqladmin-flush-hosts-on-amazon-rds/

https://luckyyowu.tistory.com/316

https://stackoverflow.com/questions/60561070/springboot-connection-to-rds-throws-exception-caused-by-java-security-cert-cer

 

반응형
Comments