Error Record

java.sql.SQLException: Access denied for user

F12:) 2023. 8. 30. 00:22

문제

Docker에서 MySQL을 받아와서, 내 프로젝트랑 같이 docker-compose.yml에 작성한 후에 실행시키니 아래와 같은 오류가 발생했다.

 

java.sql.SQLException: Access denied for user 'username'@'~' (using password: YES)

 


해결

MySQL의 관리자 계정으로 사용자에게 접근 권한을 부여해야한다.

 

만약 도커로 MySQL을 다운했다면, 도커 허브에서 그렇지 않다면 MySQL bash에서 바로 진행할 수 있다.

 

 

 

우선 관리자 계정으로 mysql에 접속하자.

mysql -u root -p

이후 패스워드를 입력한다.

 

이후, 관리자 계정으로 접근 권한을 부여하기 위해 아래와 같은 명령어를 실행하자.

CREATE USER 'new_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'%';
FLUSH PRIVILEGES;

 

new_user에는 user 이름을 작성하면 된다. user 이름은 docker-compose.yaml에 작성되어있다. 또한 @ 뒤에 '%'는 모든 접근을 의미한다. 따라서 new_user의 모든 접근을 허용한다는 뜻으로 이해할 수 있다.

 

password 또한 docker-compose.yaml에 작성된 것처럼 적어주자.

 

 

 

 

위의 작업을 모두 마쳤다면, 다시 서버를 실행할 때 잘 작동되는 것을 볼 수 있다.