본문 바로가기
프로그래밍/프로그래밍 기타

도커에서 mysql 이미지 실행하기

by freeelifee 2025. 4. 15.
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