강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

알함님의 프로필 이미지
알함

작성한 질문수

Docker 사용시에 mysql이 springboot에 안 붙는데 해결법이 궁금합니다.(java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES))

작성

·

211

0

Docker Containers의 경우 아래와 같이 제대로 동작하고 있고

docker는 Mac 상에서 아래와 같이 실행시켰습니다.

MacBookPro ~ % brew link docker

MacBookPro ~ % docker run 8550a9a141fd

실행 한 후 inellij터미널에서 아래와 같이 입력을 해서

docker exec -it mysql bash

bash-4.4# mysql -u root -p

mysql> use stock_example

사용했을 때는 잘 작동했는데

다음 날 똑같은 방법으로 실행하니 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 오류가 발생했습니다. 혹시 해결 방법을 아시나요.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 오류는 데이터베이스에 접근할 때 사용하는 사용자 이름 또는 비밀번호가 잘못되었거나, 해당 사용자에게 접근 권한이 없을 때 발생합니다. Docker를 사용하여 MySQL를 실행할 경우 몇 가지 확인해야 할 사항이 있습니다:

  1. Docker 컨테이너를 실행할 때 MySQL 사용자 이름과 비밀번호를 올바르게 설정했는지 확인해주세요. 예를 들어, MySQL Docker 이미지를 실행할 때 환경 변수를 통해 MYSQL_ROOT_PASSWORD를 설정할 수 있습니다.
  2. MySQL 서버가 Docker 컨테이너 내부에서 실행되고 있는지, 외부에서 접근하려는 경우 ‘localhost’ 대신 Docker 네트워크 내에서 컨테이너의 이름이나 IP를 사용해야 할 수 있습니다.
  3. MySQL 사용자 권한 문제일 수 있습니다. MySQL에서는 사용자가 어느 호스트에서 접속하느냐에 따라서 다른 권한을 가질 수 있습니다. 예를 들어, ‘root’@‘localhost’와 ‘root’@‘%‘는 다를 수 있습니다. Docker 컨테이너에서 실행되고 있는 MySQL 서버에 접속하여 해당 사용자에게 충분한 권한이 있는지 확인해보세요.
  4. MySQL 서버에 접속하는 스프링 부트 애플리케이션의 설정을 확인해주세요. application.properties 또는 application.yml 파일 등에서 정의된 데이터베이스 URL, 사용자 이름, 비밀번호가 올바른지 확인해야 합니다.

해결 방법으로는 다음과 같은 명령어를 Docker 컨테이너 내부에서 실행하여 해당 사용자의 접속 허용 호스트를 변경하거나 비밀번호를 재설정할 수 있습니다:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '새로운비밀번호';
FLUSH PRIVILEGES;

이 명령어는 ‘root’ 사용자의 접속 허용 호스트를 ‘localhost’로 제한하고, 비밀번호를 ‘새로운비밀번호’로 변경합니다. 필요에 따라 사용자 이름과 호스트를 알맞게 변경해주세요.

이러한 점들을 확인해보시고 문제가 지속되면 추가적인 설정이나 로그를 확인해보는 것이 좋습니다.

알함님의 프로필 이미지
알함

작성한 질문수

질문하기