겸손하기 꾸준하기 건강하기

java.sql.SQLException: Access denied for user 본문

project/error

java.sql.SQLException: Access denied for user

seminss 2023. 11. 1. 10:23
`2023-10-28T00:12:31.709+09:00 ERROR 31165 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.`

`java.sql.SQLException: Access denied for user 'claire'@'localhost' (using password: YES)`

스프링에서 DB연결이 제대로 안되었을 때 나는 에러다.

결론적으로는 쉘을 zsh -> bash로 변경해주니까 해결되었다.

 

 


 

2023 9월 초.. 개발 컴퓨터 운영 체제를 ubuntu22.04로 변경 했었다.

 

그 후 쉘 꾸(?)를 위해 zsh 를 사용하게 되었는데, 당시에는 그게 문제라는 걸 모르고

연습용 개인 프로젝트 DB 연결을 하려고 할 때, 계속 이 에러에 마주쳤었다!

 

딱 보면 application.yml을 잘못 작성해서 연결이 안되는 것 같아 보이지만,, 어떤 방법으로도 접속이 되지 않았다. :(

 

당시 해봤던 것 (해결 x)

  1. Id, password 올바른지 확인
  2. 유저 새로 만들고 권한 줘서 다시 연결해보기
  3. root로 연결해보기
  4. jdbc, mysql 버전 확인
  5. 캐시 refrash -> jdbc 재로딩
  6. mysql에 모든 호스트가 접근할 수 있도록 bind-address=0.0.0.0으로 수정 (의미 없지만..)
  7. 당시 db를 도커로 올리고 있었는데, 로컬 db로 다시 시도

 

약 1주일 정도 고생하다가 해결 못하고, 화가 잔뜩 나서 공부를 잠시(?) 던졌다. 🫤

 

 


 

그러다가 GDSC 스터디를 하면서 개인 프로젝트를 다시 진행해야 할 일이 생겼다.

 

위 에러를 잠시 잊고 있었는데, 새 프로젝트, 새 데이터베이스에서도 여전히 똑같은 에러가 나는거다.

그래서 마음을 가다듬고 다시 차근차근 접근 해보기로 했다.

 

 

시도해 본 것들 (해결 o)

1. mysql 에 정말 claire라는 user가 있는지 확인해보자.

mysql> use mysql;
mysql> select host, user, authentication_string from user;

없었다.

 

생성하려고 할 때마다 에러가 나서, 유저가 있는 줄 알았는데, user 목록을 확인해보니까 존재하지 않았다.

생성할 때 에러가 났던 건 제거를 했지만, 완전히 지워지지 않아 메타데이터로 남아있기 때문 이었던 것 같다.

 

DROP USER 'claire'@'localhost'; 지워준다.
CREATE USER 'claire'@'localhost' IDENTIFIED BY 'password'; 사용자 생성
GRANT ALL PRIVILEGES ON board_db.* TO 'claire'@'localhost'; 데이터베이스에 대한 권한 부여
FLUSH PRIVILEGES; 권한 정보 갱신

을 해서 claire를 지우고 새로 만들어줬다.

이제서야 claire라는 유저가 진짜 생성이 되었다. 그러나 여전히 스프링 어플리케이션은 구동이 안됐다.

 

 

2. mysql의 bind address 를 확인해보자. 127.0.0.1(local host) 이 아니라면 연결이 안될 수도 있다.

잘 설정이 되어 있었다. 그런데 안된다.

 

 

3. 변경 사항이 적용이 안됐을 수도 있으니, mysql을 재시작 해보자.

sudo systemctl restart mysql
sudo systemctl status mysql

안됐다.

 

 

4. mysql과 jdbc 버전을 확인해보자.

mysql : 8.0.33

jdbc의 mysql : 8.0.34 

호환이 되어야 하는게 정상이다. 그런데 안된다.

 

 

 

5. 화난다. 그냥 mysql 지우고 다시 깔자.

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

sudo apt update
sudo apt install mysql-server

!!!!!!!!!??? 지워지지가 않았다!!!!!!!!!!!!!!!!!

 

왜 안지워지는가 살펴보니 zsh : ~~~ permission denied 더라.

 

혹시나 해서 bash 로 변경해서 지워봤다.

잘... 지워졌다. 😶‍🌫️😶‍🌫️😶‍🌫️

 

지우고 다시 깔아줬다. 유저 새로 만들고 비밀번호도 새로 설정해줬다.

 

이 때, 이전에는 확인하지 못했던 "비밀번호가 유효하지 않다"는 에러도 마주쳤는데,

이전에 보지못했던 에러라 오히려 반가웠다. ㅎㅋㅋㅋ

아무튼 확인해서 조건에 맞게 비밀번호를 재설정 해주었다.  

 

됐다. 드디어 됐다!!!!

 


아마도 zsh 쉘로 변경할 당시에 환경 변수 설정을 제대로 안해줘서 db 연결할 때 문제가 있었던 것 같다.

'project > error' 카테고리의 다른 글

MySQL.. 너 날 왜 이렇게 괴롭히니  (3) 2024.03.25