구현기/트러블 슈팅

[Spring Boot] Access denied for user 'root'@'localhost' (using password: YES)

Sadie Kim 2023. 6. 11. 16:44

팀 프로젝트에서 서버 측과 연동하기 위해 스프링부트와 낮부터 씨름하고 있는데 계속 에러가 났다.

문제 상황

빌드 과정 전체가 에러의 연속이었는데, 어찌어찌 헤쳐나가다 mysql을 깔래서 깔고 서버를 실행시켰더니 에러 발생.

[Spring Boot] Access denied for user 'root'@'localhost' (using password: YES)

위 에러메시지를 중심으로 찾아보니 mysql 로그인 오류라고 한다.
그러나 해당 메시지로 구글링을 하면 mysql 자체에서의 해결법이 나오고, 나처럼 스프링부트 환경에서 이런 에러를 해결한 경우가 없어서 조금 헤맸다.

해결법

gradle 사용 시 스프링 부트에서 mysql 연동을 하기 위해서는 src/main/resources/application.properties에 연결하기 위한 코드와 계정, 비밀번호 등을 넣어야 한다.(참고 사이트)
해당 경로로 들어가서 본 결과 우리 백엔드 팀이 설정한 password와 내가 mysql을 설치하는 과정에서 지정한 password가 다른 것을 볼 수 있었다.😨

원인을 파악했으니 mysql 계정 비밀번호를 바꾸러 가 본다.

mysql 비밀번호 바꾸는 법

참고 사이트
먼저 MySQL 셸을 키고 루트로 로그인한다.

mysql -u root -p


만약 이런 에러가 난다면 JS 타입이기 때문이다.
\sql 명령어를 통해 sql 타입으로 변경해야 한다.


만약 이런 Not connected 에러가 난다면


이렇게 접근하면 어떻게든 접속이 되는 듯하다.

이후 다음 명령어를 친다.

alter user 'root'@'localhost' identified with mysql_native_password by 'new password';
flush privileges;

위 명령어는 비밀번호를 바꾸는 명령어고, 아래는 변경사항을 적용하는 코드이다.

이렇게 나오면 변경이 된 거라고 한다.
이후 mysql workbench를 켜서 바뀐 비밀번호로 로그인해 보니 잘 되었다.
그럼 프로젝트를 돌려 본다.

에러가 다음 단계로 넘어갔다! unknown database는 현재 mysql에 아무런 데이터가 없기에 당연한 에러다.
해결됐다!😂