728x90
✅ 1. MySQL 컨테이너 실행
다음 명령어를 사용하여 MySQL 컨테이너를 실행할 수 있습니다:
docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 mysql:latest
🔹 설명
- -d → 백그라운드 실행
- --name mysql-container → 컨테이너 이름 지정
- -e MYSQL_ROOT_PASSWORD=my-secret-pw → MySQL 루트 비밀번호 설정
- -p 3306:3306 → MySQL 기본 포트(3306) 연결
- mysql:latest → MySQL 최신 버전 사용
✅ 2. MySQL 컨테이너 접속
MySQL 내부로 접근하려면 다음 명령어를 사용합니다:
docker exec -it mysql-container mysql -u root -p
➡ 이후 my-secret-pw 비밀번호를 입력하면 MySQL 셸에 접속할 수 있습니다.
✅ 3. MySQL 데이터 지속성 유지 (볼륨 설정)
컨테이너 삭제 후에도 데이터를 유지하려면 볼륨을 설정해야 합니다.
docker volume create mysql-data
docker run -d --name mysql-container -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql-data:/var/lib/mysql -p 3306:3306 mysql:latest
📌 mysql-data:/var/lib/mysql → MySQL 데이터를 mysql-data 볼륨에 저장.
에러 발생시 : Public Key Retrieval is not allowed
이 오류는 MySQL 서버에 접속할 때 공개 키(Public Key) 검색이 허용되지 않아서 발생하는 문제입니다. 보통 MySQL 8.0 이상에서 기본적으로 caching_sha2_password 인증 방식이 사용되면서 발생할 수 있습니다.
✅ 🚀 해결 방법
🔹 1. MySQL 접속 시 옵션 추가
MySQL 클라이언트나 애플리케이션에서 접속할 때, allowPublicKeyRetrieval=true 옵션을 추가하면 해결됩니다.
📌 JDBC URL 예제
String url = "jdbc:mysql://localhost:3306/mydb?allowPublicKeyRetrieval=true&useSSL=false";
📌 allowPublicKeyRetrieval=true → 공개 키 검색 허용 📌 useSSL=false → SSL 사용 안 함 (필요한 경우 설정 변경)
🔹 2. MySQL 사용자 인증 방식 변경
MySQL에서 사용자 인증 방식을 mysql_native_password로 변경하면 문제를 해결할 수 있습니다.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;
📌 기존 caching_sha2_password 인증 방식을 mysql_native_password로 변경
🔹 3. MySQL 설정 변경 (my.cnf 또는 my.ini)
MySQL의 설정 파일에서 default_authentication_plugin을 변경할 수도 있습니다.
📌 설정 파일 편집
[mysqld]
default_authentication_plugin = mysql_native_password
➡ 변경 후 MySQL을 재시작해야 적용됩니다.
sudo systemctl restart mysql # Linux
net stop mysql && net start mysql # Windows
📌 결론
- JDBC URL에 allowPublicKeyRetrieval=true 추가
- MySQL 사용자 인증 방식을 mysql_native_password로 변경
- MySQL 설정 파일에서 인증 방식 수정 후 재시작
728x90
'프로그래밍 > 프로그래밍 기타' 카테고리의 다른 글
도커 컴포즈(Docker Compose) (0) | 2025.04.15 |
---|---|
도커 볼륨(Docker Volume) (0) | 2025.04.15 |
쿠버네티스(Kubernetes) (0) | 2025.04.15 |
도커(Docker) (0) | 2025.04.15 |
ChatGPT API 사용법 (0) | 2025.04.11 |