Я хочу хранить данные своей базы данных постоянно, используя docker-compose в WSL (Windows).Мой файл docker-compose.yml находится ниже./C/Users/XXX/Documents/dev/db-data
- это каталог данных базы данных, и этот каталог будет хранить данные постоянно.Я мог бы построить контейнер, используя ниже docker-compose.yml.
db_docker:
image: mysql:5.7
container_name: mysql
env_file:
- .env.mysql
ports:
- "3306:3306"
volumes:
- /C/Users/XXX/Documents/dev/db-data:/var/lib/mysql
Но я не смог получить доступ к базе данных этого контейнера, и сообщение об ошибке, как показано ниже.
ОШИБКА 29(HY000): файл './mysql/user.MYD' не найден (код ошибки: 13 - разрешение отклонено)
Я искал это сообщение об ошибке и обнаружил, что владельцем /var/lib/mysql
является root:root
.drwxrwxrwx 2 root root 4096 27 ноября 03:42 mysql drwxrwx --- 2 mysql mysql 4096 16 ноября 01:14 mysql-files drwxr-x --- 2 mysql mysql 4096 16 ноября 01:14 mysql-keyring
Я проверил, как изменится владение, если я удалю настройку томов из docker-compose.yml.И я построил контейнер, используя приведенный ниже установочный файл.
db_docker:
image: mysql:5.7
container_name: mysql
env_file:
- .env.mysql
ports:
- "3306:3306"
В этих условиях владельцем /var/lib/mysql
является mysql:mysql
, и я мог получить доступ к своей базе данных.
Исходя из этих фактов,При монтировании файла будет установлено право владения от /var/lib/mysql
до root:root
, и я смогу решить свою проблему, если смогу изменить разрешение /var/lib/mysql
.
Далее, я попытался, как показано ниже.999
- это UID и GID mysql, но разрешение /var/lib/mysql
равно root:root
.
db_docker:
image: mysql:5.7
container_name: mysql
env_file:
- .env.mysql
ports:
- "3306:3306"
user: "999:999"
volumes:
- /C/Users/XXX/Documents/dev/db-data:/var/lib/mysql
Это моя история мышления, и я до сих пор не смог решить эту проблему.Как изменить владельца подключенного каталога?