에러메세지 / 문제상황

MySQL Docker 컨테이너 실행 직후 자동 종료됨. docker logs 결과:

mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted)
[ERROR] Could not set file permission for ca.pem
[ERROR] The designated data directory /var/lib/mysql/ is unusable.

 

 

원인

MySQL은 실행될 때 데이터를 저장할 공간(폴더)이 필요함.

그 저장 공간을 Windows 컴퓨터 안의 폴더(예: C드라이브 경로)로 연결했고, MySQL은 해당 폴더 안에서 파일 권한을 바꾸거나 소유자를 설정하려고 함.

그러나 Windows 폴더는 이런 리눅스식 작업을 허용하지 않기 때문에, MySQL이 필요한 작업을 하지 못해 실행이 중단됨.

→ 따라서 Windows 폴더는 리눅스 프로그램이 자유롭게 다룰 수 없는 구조라서 문제가 발생함.

시도 1

  • Windows 측의 마운트 디렉토리 삭제 후 재시도
  • 동일한 오류 발생

시도 2

  • data 생성 디렉토리를 바꿔 컨테이너 실행했으나 같은 오류 발생
  • mysql_data → mysql_data2

해결책

Windows 쪽 폴더를 쓰는 게 아니라, Ubuntu(리눅스) 안에 있는 폴더를 사용하도록 수정함:

mkdir -p ~/docker/docker-mysql/mysql_data

docker run -e MYSQL_ROOT_PASSWORD=**** \\
  -d -p 3306:3306 \\
  -v ~/docker/docker-mysql/mysql_data:/var/lib/mysql \\
  mysql

→ 리눅스 내부 폴더는 MySQL이 자유롭게 접근하고 설정을 바꿀 수 있기 때문에, 컨테이너가 정상적으로 실행됨

회고 및 정리

  • Docker에서 데이터를 저장할 때는 'Ubuntu 안의 폴더'를 사용하는 것이 안전하다
  • Windows 폴더를 연결하면 권한 문제로 오류가 생길 수 있음
  • 특히 MySQL처럼 데이터를 직접 다루는 프로그램은 리눅스 폴더를 쓰는 게 필수

→ 앞으로는 /mnt/c/... 같은 경로 대신 ~/폴더명처럼 리눅스 안에 있는 경로를 쓰는 게 좋다!