Generalnie nie wiem jaką wiedzę chcesz przekazywać i czy "jesteś do tego odpowiednią osobą, po tym co przeczytałem", ale dlaczego nie możesz wystawić po prostu tylko 1 instancji MySQL, a potem po prostu prostym mechanizmem skonfigurować uprawnienia dla użytkowników w taki sposób, aby każdy miał dostęp tylko do swojej bazy danych.?
Jest coś takiego jak MySQL Access Control https://dev.mysql.com/doc/refman/8.0/en/access-control.html
W phpMyAdmin to samo, jedna instancja i zarządzasz uprawnieniami - ograniczenia nakładasz do odpowiedniej bazy.
natomiast co do :
Czy w takim układzie nie lepiej uruchomić MySQLa w dockerze (może wraz z phpmyadmin)?
Kwestia podejścia- możesz spokojnie uruchomić instancje w dokerze, oraz pHpMyAdmin również w dokerze, szczególnie jeśli chcesz mieć większą izolację pomiędzy różnymi środowiskami bazy danych dla różnych użytkowników.
W ten sposób każdy użytkownik będzie miał dostęp do swojej instancji MySQL poprzez phpMyAdmina, wymaga to jednak do Ciebie niestety konfiguracji zabezpieczeń.
Zasadniczo nie jest Ci potrzebny obraz dokera, możesz korzystać już z istniejącego, bo ożesz uruchomić wiele kontenerów na podstawie tego samego obrazu MySQL tylko każdy musi mieć inne nazwy oraz inne porty, hasła etc.
Utworzenie różnych portów zapewni Ci działanie równolege, poprzez mapowanie portów podczas uruchamiania kontenerów.
Najlepiej to zrobić z pomocą prostego skryptu
#!/bin/bash
docker run --name mysql_instance1 -e MYSQL_ROOT_PASSWORD=haslo1 -d -p 3306:3306 mysql:latest
docker run --name mysql_instance2 -e MYSQL_ROOT_PASSWORD=haslo2 -d -p 3307:3306 mysql:latest
docker run --name mysql_instance3 -e MYSQL_ROOT_PASSWORD=haslo3 -d -p 3308:3306 mysql:latest
natomiast teraz mowa o powiązaniu np. pHpMyAdmin z dokerem, no to możesz to zrobić tworząc pewną sieć i linkując
Przykład np. utworzenia sieci, najpierw utwórz sieć DOKERA, potem ustaw połączenie phpMyAdmina z instancjami MySQL
Uruchom skrypt w sieci dokera;
docker run --name mysql_instance1 -e MYSQL_ROOT_PASSWORD=haslo1 -d -p 3306:3306 --network my_network mysql:latest
i teraz admin do tej samej sieci
docker run --name my_phpmyadmin1 -d -p 8080:80 --network my_network phpmyadmin/phpmyadmin
Nic nie stoi na przeszkodzie zrobić to dla każdej instancji i uztykowników, pamietaj o tym, że w tym wypadku musisz PODLINKOWAĆ daną instancje, do konkretnego pHpMyAdmin
# Instancja MySQL dla użytkownika 1
docker run --name mysql_instance1 -e MYSQL_ROOT_PASSWORD=haslo1 -d --network my_network mysql:latest
# phpMyAdmin dla użytkownika 1
docker run --name my_phpmyadmin1 -d -p 8081:80 --network my_network --link mysql_instance1:db phpmyadmin/phpmyadmin
Tak użytkownicy mogą korzystać z różnych instancji oraz różnych instancji admina niezaleznie.