>데이터 베이스 >MySQL 튜토리얼 >MYSQL_ROOT_PASSWORD 설정에도 불구하고 내 Docker MySQL 컨테이너가 액세스를 거부하는 이유는 무엇입니까?

MYSQL_ROOT_PASSWORD 설정에도 불구하고 내 Docker MySQL 컨테이너가 액세스를 거부하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-03 09:05:11423검색

Why Does My Docker MySQL Container Deny Access Despite Setting MYSQL_ROOT_PASSWORD?

MYSQL_ROOT_PASSWORD를 설정했는데도 Docker 컨테이너의 MySQL에 대한 액세스가 거부되었습니다.

소개

Docker에서 MySQL 데이터베이스에 액세스하려는 시도 컨테이너는 루트 비밀번호가 설정된 경우에도 액세스 거부 오류를 생성할 수 있습니다. MYSQL_ROOT_PASSWORD 환경 변수입니다. 이 문제는 기존 데이터베이스 데이터가 초기화에 미치는 영향을 오해하여 발생할 수 있습니다.

문제

컨테이너 초기화 중에 볼륨이 데이터베이스에 매핑된 경우 데이터 디렉터리(이 경우 db_data)에는 이미 데이터베이스 파일 시스템이 포함되어 있으며, 컨테이너는 기존 데이터베이스를 존중하고 다음을 포함하여 초기화와 관련된 모든 환경 변수를 무시합니다. MYSQL_ROOT_PASSWORD. 결과적으로 구성된 자격 증명을 사용하여 데이터베이스에 액세스하려는 시도는 실패합니다.

해결책

이 문제를 해결하려면 사전 인증 없이 컨테이너를 시작해야 합니다. 기존 데이터베이스 볼륨. 다음 명령을 사용하여 데이터 볼륨을 삭제하면 됩니다.

docker-compose down -v

그런 다음 docker-compose up -d 명령을 사용하여 컨테이너를 다시 불러옵니다. 이 프로세스는 기존 데이터베이스 내용을 지우고 MYSQL_ROOT_PASSWORD에 저장된 지정된 루트 비밀번호로 새 데이터베이스를 초기화합니다.

참고: 위 명령을 사용하면 기존 데이터가 영구적으로 삭제되므로 주의하세요. db_data 볼륨. 이 데이터를 보존하려면 이 명령을 실행하기 전에 백업을 만드십시오.

바인드 마운트의 대안

바인드 마운트를 사용하는 경우 탐색하여 해당 내용을 수동으로 제거하십시오. 바인드 마운트 경로에 추가하고 다음을 실행합니다.

rm -rf /path/to/bind/mount/*

기타 관련 정보

이 접근 방식은 MySQL 도커 이미지에 적용됩니다. 그러나 PostgreSQL 및 MongoDB용 이미지를 포함한 다른 공식 데이터베이스 Docker 이미지는 유사한 초기화 프로세스를 따르며 기존 데이터 볼륨을 사용할 때 비슷한 문제가 발생할 수 있다는 점은 주목할 가치가 있습니다.

위 내용은 MYSQL_ROOT_PASSWORD 설정에도 불구하고 내 Docker MySQL 컨테이너가 액세스를 거부하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.