[DBeaver][Docker][MySQL] Access denied for user 'root'@'localhost' (using password: YES)

SEPTEMBER·2025년 4월 22일

< 작업 환경 >

IDE: IntelliJ
Spring Boot: 3.4.1
Java: 21
EC2 Linux: Ubuntu

문제

MySQL이 Docker 컨테이너에서는 잘 실행되는데 DBeaver에서는 연결되지 않는 문제가 발생했다.

DBeaver 오류창에는 Access denied for user 'root'@'localhost' (using password: YES) 라고 떴다. 검색해보니 해당 오류는 비밀번호가 일치하지 않을 때 발생한다고 했다. 하지만 내 경우엔 테스트 용도로 만든 DB라 비밀번호를 아주 단순하게 설정했기 때문에 다른 이유가 있을 거라고 생각했다. 그렇지만 짐작만으로 코딩을 할 수는 없기에 비밀번호를 확인해 보았다.

docker exec -it [MySQL 컨테이너 ID] bash
echo $MYSQL_ROOT_PASSWORD

상단 명령어를 입력하면 MySQL 비밀번호를 확인할 수 있다. 확인해보니 역시나 비밀번호를 잘못 입력한 건 아니었다.

해결

문제의 원인은 Dbeaver가 같은 포트 번호(3306)로 Mac에 설치된 로컬 MySQL 서버에 이미 연결 중이었기 때문이었다.

step 1: 실행 중인 MySQL 프로세스 확인

lsof -i :3306

터미널에 상단 명령어를 입력하면 현재 실행 중인 MySQL 프로세스를 확인할 수 있다. 조회 결과를 보면 두개의 프로세스가 실행중이다. 첫번째가 로컬 MySQL이고 두번째가 Docker 컨테이너에서 실행중인 MySQL이다.

step 2: 로컬 MySQL 종료

sudo kill -9 [PID 번호 입력]

상단 명령어로 로컬 MySQL을 종료한다. 명령어를 입력하면 비밀번호 입력란이 생기는데, 여기서 주의할 점은 MySQL 비밀번호가 아닌 내 PC의 사용자 비밀번호를 입력해야 한다는 것이다.

이후 step1의 lsof -i :3306 명령어를 입력해 프로세스가 종료되었는지 확인한다.

*만약 프로세스가 그대로 살아 있다면(PID 번호는 바뀌었을 것이다) 이것은 Mac에서 brew로 설치한 MySQL은 기본적으로 launchctl이나 brew services를 통해 백그라운드에서 자동 실행되게 설정되어 있기 때문이다. 이 문제는 아래 명령어를 입력하여 해결할 수 있다.

brew services stop mysql

step 3: Dbeaver 연결

이제 다시 Dbeaver에 MySQL을 연결하면 문제 없이 잘 되는 걸 확인할 수 있다!

0개의 댓글