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에 작성된 것처럼 적어주자.
위의 작업을 모두 마쳤다면, 다시 서버를 실행할 때 잘 작동되는 것을 볼 수 있다.