호테의 노트에 오신 것을 환영합니다 🙌

Tableau와 Salesforce, Python과 SQL 등 데이터의 전반적인 것들을 다루는 기술 블로그입니다.

SQL

MySQL Public Key Retrieval 오류 해결법 (DataGrip, Workbench 모두 적용 가능)

Hote's Note 2025. 4. 3. 00:15

만약  “Public Key Retrieval is not allowed” 에러가 발생해서 연결이 안 되는 상태라면

JDBC URL에 옵션을 추가해줘야 합니다.


✅ 해결 방법 (DataGrip에서)

1. 위 화면에서 “URL” 쪽에 다음처럼 수정하세요:

기존:

jdbc:mysql://localhost:3306/

수정:

jdbc:mysql://localhost:3306/?allowPublicKeyRetrieval=true&useSSL=false
주의: ? 뒤에 옵션들을 붙여야 하고, 여러 개일 땐 &로 연결해줘야 해요.

2. 또는 “Driver Properties” 탭에서 설정해도 됨

1. 왼쪽 탭에서 Driver properties 클릭

2. 아래쪽에 + 버튼 눌러서 새 속성 추가

3. 다음처럼 추가:

NameValue

allowPublicKeyRetrieval true
useSSL false

 


3. 그 다음 하단에서 Test Connection… 눌러보세요!

연결 성공하면, 초록색 ✅ 나오면서 연결 완료될 거예요.


필요하다면 MySQL 사용자 인증 방식도 바꾸는 방법도 알려 드리겠습니다.
그런데 지금 설정으로는 URL 수정만으로 해결될 가능성이 높아요 😊

아마 DataGrip에서 MySQL 연결 설정을 하려다가, Public Key Retrieval is not allowed 오류가 뜨는 상황일 거예요.
이 문제는 MySQL 8.0에서 caching_sha2_password 인증 방식을 쓸 때 자주 발생합니다. 해결 방법은 크게 두 가지입니다.


1) DataGrip 연결 URL에 allowPublicKeyRetrieval=true 옵션 추가하기

 

가장 간단하고 추천하는 방법은 연결 URLallowPublicKeyRetrieval=true를 붙이는 거예요.
DataGrip에서 아래 순서로 설정해보세요.

1. DataGrip에서 Database 창 → 현재 연결 설정(예: localhost)을 더블 클릭

2. Main 탭 → URL 부분을 다음처럼 수정

jdbc:mysql://localhost:3306/your_db?allowPublicKeyRetrieval=true&useSSL=false

your_db 자리에 접속하려는 DB 이름을 넣어주세요.

useSSL=false는 로컬 개발 환경일 때만 쓰고, 실제 서비스에서는 true로 바꾸는 걸 권장해요.

3. Test Connection 버튼 눌러서 연결 테스트

이렇게 하면 Public Key Retrieval is not allowed 오류 없이 바로 연결될 거예요.


2) MySQL 사용자 인증 방식을 mysql_native_password로 바꾸기

만약 URL 수정이 불편하거나, 여러 툴에서 계속 쓸 일이 있다면, MySQL 쪽에서 인증 방식을 아예 바꿀 수도 있어요.

1. 터미널에서 MySQL 클라이언트로 접속 (예: mysql -u root -p)

2. 아래 명령어 실행:

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

3. DataGrip에서 다시 연결 테스트

이렇게 하면 MySQL이 더 이상 caching_sha2_password가 아니라 mysql_native_password로 인증을 받아들이게 되어서, Public Key Retrieval is not allowed 에러가 사라집니다.


정리

가장 빠른 해결: URL 끝에 ?allowPublicKeyRetrieval=true&useSSL=false 추가

근본적인 해결: MySQL 계정의 인증 방식을 mysql_native_password로 변경

먼저 1번 방법으로 시도해보시고, 안 되면 2번을 시도해보시면 좋습니다.