Проблема
Проблема может быть в версиях Mysql и MongoDB и / или UID и GID пользователя для /var/lib/mysql
и /data/db/mongo
.
Версии
Прежде всего версии Mysql и MongoDB, работающие в контейнере, должны совпадать с версиями, запущенными на хосте, чтобы вы могли использовать те же папки, что и на хосте.
Имейте в виду, что нельзя одновременно использовать сервер Mysql и сервер MongoDB на хосте и в контейнерах, совместно используя одни и те же файлы.
Под одними и теми же файлами я имею в виду /var/lib/mysql
и /data/db/mongo
на вашем хосте.
Если вы хотите, чтобы серверы работали на локальном хосте, вам нужно скопировать эти папки в другое место и иметь те же UID и GID для пользователя.
UID и GID пользователя
Пользователь Mysql и пользователь базы данных Mongo внутри контейнера докера и хоста должны иметь одинаковые UID и GID.
Проверьте их в обоих:
$ sudo docker run --rm -it mysql bash
root@4c07b20e88c4:/# grep -irn mysql /etc/passwd
20:mysql:x:999:999::/home/mysql:
root@4c07b20e88c4:/# grep -irn mysql /etc/group
40:mysql:x:999:
или в:
root@4c07b20e88c4:/# id -u mysql
999
root@4c07b20e88c4:/# id -g mysql
999
Как видите, UID равен 999nd GID также 999 для пользователя и группы.Теперь просто повторите то же самое на хосте.
Возможное решение
Проверьте версии для Mysql и MongoDB на хосте и в контейнере и, если они не совпадают, обновите контейнер для запуска тех же версийхоста.
Также задайте для пользователя Mysql и MongoDB на хосте тот же UID и GID, который используется внутри контейнера, или наоборот ... выберите тот, который лучше всего подходит для вашего использованияcase.
Изменение UID и GID пользователя
Запустите в оболочке:
root@4c07b20e88c4:/# usermod -u 800 mysql
root@4c07b20e88c4:/# id -u mysql
800
root@4c07b20e88c4:/# groupmod -g 800 mysql
root@4c07b20e88c4:/# id -g mysql
800
замените 800
на нужный номер идентификатора и mysql
наимя пользователя, для которого вы хотите изменить идентификаторы.
Далее обновите права доступа к файлу для этого пользователя:
find / -user <OLDUID> -exec chown -h <NEWUID> {} \;
и для группы:
find / -group <OLDGID> -exec chgrp -h <NEWGID> {} \;
Дополнительная информация здесь