-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
bugSomething isn't workingSomething isn't workingdatabasedocumentationImprovements or additions to documentationImprovements or additions to documentationerror fixed
Description
🍋TIL - 2025 -03 - 21 - Friday
📚 오늘의 학습
- 🍀 Rancher Desktop 다운 후 Intellij에 MySQL 연결
- 🍀 Supabase 를 활용한 PostgresSQL 연결
- 🍀 초기 설정에서 인증 방식과 이미지 호환성의 중요성
🚨 문제 상황
Rancher Desktop로 MySQL을 실행한 후 IntelliJ에서 데이터베이스 연결을 시도했지만,
계속해서 다음과 같은 오류가 발생함:
Access denied for user 'root'@'localhost'
Connection refused
비밀번호, 사용자 계정 설정 모두 맞췄음에도 연결이 되지 않아서 문제 원인 파악에 어려움을 겪음.
🎯 시도한 과정
여러 가지 접근 방식으로 문제를 해결하려 했지만 실패:
- MySQL 기본 이미지(mysql:8.0) 사용
- ALTER USER를 통해 인증 방식 변경
- root@% 계정 생성 및 권한 설정
- IntelliJ에서 Host를 127.0.0.1, Port를 3306 또는 3307으로 시도
- 컨테이너 삭제 및 재생성 반복
- 그러나 여전히 연결 오류는 해결되지 않음.
-> 하지만 여전히 연결 실패… 이유는? → 인증 방식 적용이 불완전 / ARM 환경에서 이미지 미지원
##🛠️ 해결 방법
기존 mysql:8.0 이미지 대신 mysql:8.0.41-oraclelinux9 이미지 사용
실행 시 아래 명령어로 인증 plugin을 아예 명시:
docker run -d --name my-mysql \
-e MYSQL_ROOT_PASSWORD=0000 \
-e MYSQL_ROOT_HOST=% \
-p 3306:3306 \
mysql:8.0.41-oraclelinux9 \
--default-authentication-plugin=mysql_native_password
이 이미지에서는 ARM(M1/M2) 환경 호환도 좋고, 인증 plugin도 정상 적용됨
이후 IntelliJ에서 정상적으로 연결 확인됨 (Succeeded)
##💡알게 된 점
- MySQL 8.0 기본 이미지는 caching_sha2_password 인증 방식을 기본으로 사용함.
- 이 방식은 최신이지만, IntelliJ, DBeaver, 일부 JDBC 드라이버와 호환되지 않아 접속 오류가 자주 발생함.
- ALTER USER로 인증 방식을 바꿔도 컨테이너 재시작이나 환경에 따라 다시 초기화되거나 무시될 수 있음.
- 가장 안정적인 해결법은 컨테이너 실행 시점에 --default-authentication-plugin=mysql_native_password 옵션을 직접 명시하는 것.
- 게다가 Mac M1/M2 (ARM64) 환경에서는 mysql:8.0 일부 이미지가 호환되지 않거나 동작이 불안정할 수 있으므로,
- mysql:8.0.41-oraclelinux9와 같은 ARM 호환 이미지를 사용하는 것이 훨씬 안전하고 안정적.
- 결국 문제의 본질은 "비밀번호나 계정 권한"이 아니라, "인증 방식과 이미지 호환성"이었다.
🐳 느낀 점
- MySQL 8.0 이상 + 외부 툴 연동 시에는 항상 인증 방식을 명시하자.
- ARM 환경에서는 이미지 호환성 확인은 필수!
- 단순한 접근 거부가 아닌, 근본 원인을 파악하는 사고력이 중요하다.
👩💻 참고 자료
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingdatabasedocumentationImprovements or additions to documentationImprovements or additions to documentationerror fixed