Я хотел бы поместить в контейнер существующую базу данных mysql, связав каталог данных внутри моего контейнера с моей локальной файловой системой.
Эта команда запуска докера работает нормально, т.е. база данных доступна, а данные сохраняются.
docker run -v ./mydata:/var/lib/mysql mysql:5.7
Однако я не могу заставить его работать с docker-compose.
Я получаю следующие ошибки
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
...
Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
Мой файл docker-compose выглядит так:
version: "3.7"
services:
database :
restart: always
image: mysql:5.7
command: --port=4406
volumes:
- ./mydata:/var/lib/mysql
Что не так с моим композитным файлом?
ОБНОВИТЬ: Содержание mydata
Еще пробовал ./mydata/mysql:/var/lib/mysql для томов. Это позволяет мне подключиться к базе данных (например, через рабочую среду mysql), но я получаю другую ошибку (DESCRIBE mysql.db File not found), когда пытаюсь увидеть пользователей.
Спасибо @Evert, да, содержимое mydata - auto.cnf ib_buffer_pool ib_logfile0 ib_logfile1 ibdata1 mysql
Может ли пользователь, под которым работает mysql, получить доступ к /var/lib/mysql/mysql/user.*?
Вы имеете в виду файлы в расположении по умолчанию каталога данных сервера mysql? Да, они доступны. Они также существуют в каталоге mydata (который является копией исходного каталога данных) и внутри контейнера.
возможно проблема с разрешением. кому принадлежат файлы / каталог на вашем хосте?
Вы нашли свою проблему? Я сталкиваюсь с таким же здесь.
@kev, это было давно и уже точно не помню. Одно из возможных решений заключалось в использовании абсолютных путей для указания пути к папке с моими данными. Другим решением было удаление моей антивирусной программы.
@Zuabi: спасибо за ответ. Я использую абсолютный путь. Сегодня вы все еще используете Docker с сервером mysql? Я разместил здесь: stackoverflow.com/questions/62429086/…
@kev, нет. Я больше не работаю над этим проектом






Как выглядит содержимое
/mydata? Можно сделатьls?