카테고리 없음

[mysql] : java.sql.sqlexception: access denied for user 'ubuntu'@'172.31.35.55' (using password: yes) 오류 해결기

최동훈1 2024. 2. 22. 03:51

 

너무 힘들었다. 도커로 cicd 구축할떄부터 마주했던 애러였다. 도커는결국 RDS로 못쓰고,  EC2 내에 mysql을 설치해서 EC2내부 mysql 주소 와 비밀번호, user: root 로 접속하니 잘 되었다.

 

그런데 나는 RDS를 사용하고 싶었다. 플리보따리 에서 cicd 구축할때는 해당 오류가 나오지 않았는데 왜이런지 모르겠다.

 

해당 오류를 해결한다고 장장 20시간이 넘게 걸린거 같다.

너무 힘들었지만 끝까지 포기하지않고 온갖 자료,블로그를 100개는 본거 같다.

드디어 해냈다. 

 

애러코드

해당 오류는 EC2에 CodeDeoploy로 인해서 jar 파일이 실행된 뒤, 스프링 실행로그를 확인해서 나왔다.

애러의 실마리 : 설마하는 마음에 DB의 User를 새로 생성하니 애러 코드가 조금 바뀐걸 알수 있었다.

 

to data base 'kusuk'으로 바뀐 모습

그로 인해서 생성한 USer에 DB 스키마에 대한 권한을 부여하면 되겠다는 생각이 들었다. 결국 해당 방법으로 성공했다.

 

 

결론은 Mysql의 사용자(User)를 추가해주고, 해당 사용자에게 권한을 부여하면 된다.

 

 

Datagrip에서 접속할려는 DB에 사용자를 추가하는 모습

 

단, 모든 권하을 추가하면 안된다. 이유를 모르겠지만, 모든 권한을 부여하려는 명령어

GRANT ALL PRIVILEGES ON *.* TO 'ubuntu'@'172.31.35.55' IDENTIFIED BY 'vdongv1620' WITH GRANT OPTION;

 

을 사용하니 또 AccessDenied 가 떴다. 

 

그래서 일단 User를 생성한뒤에, 권한을 수정하는 방식으로 해야한다.

 

 

여기 클릭한다음에 권한설정

여기를 클릭한 다음에 권한을 +버튼을 눌러서 추가한 다음에, Create,Delete,Insert,Select ,Alter 권한을 추가해주면 된다.

 

권한추가

이렇게 권한을 추가하면 EC2 내에서 RDS 가 연결되어있는 정보가 application.yml에 존재 하더라도 AccessDenied 오류가 나지 않고, 해당 정보로 그대로 RDS에 접속하여 스프링이 실행된다.

 

 

진짜 중간에 포기하고 싶었지만, 눈알빠져라 봤던거 같다. 이번경험을 통해 어떤 애러가 와도 해결할수 있겠다는 자신감을 얻었다.