ariaDB ist auf Linuxsystemen per Default, sehr sicher vor dem Zugriff von außen. Wird Mariadb oder auch MySQL neu installiert, kann man nur local (127.0.0.1) auf die Datenbank zugreifen. Möchte man z.B. die Datenbank per Webinterface ( phpmyadmin ) verwalten, muss auch das Paket auf diesem Server installiert werden.
Was nun aber, wenn phpmyadmin als Dockerversion genutzt wird? Bei dieser Konstellation kann nicht auf MariaDB zugegriffen werden, weil eben nur localhost
definiert ist und darüber der Zugriff erlaubt ist.
Remotezugriff erlauben
MariaDB Server stoppen
systemctl stop mariadb
Im unten genannten Verzeichnis gibt es die Datei 50-server.cnf
/etc/mysql/mariadb.conf.d
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Abschnitt [mysqld]
anpassen und bind-address ändern
#bind-address = 127.0.0.1 bind-address = 0.0.0.0
Hierüber lässt sich nun aus sicherheitstechnischen Gründen streiten, ob dort durch 0.0.0.0 alle Clienten zugelassen werden wollen oder nicht. Hier kann natürlich auch nur die externe Client IP angeben werden.
Werte abfragen, was mit MariaDB geladen wird
mysqld --help --verbose
Neuen User anlegen
mysql -uroot -p
Abfrage bereits vorhandener User
SELECT User,Host FROM mysql.user;
Benutzer erstellen mit Wildcard %
CREATE USER IF NOT EXISTS `dein-neuer-username`@`%` IDENTIFIED BY "dein-sicheres-passwort";
GRANT ALL PRIVILEGES ON *.* TO 'dein-neuer-username'@'%' IDENTIFIED BY 'dein-sicheres-passwort' WITH GRANT OPTION;
FLUSH PRIVILEGES; EXIT;
MariaDB-Server neu starten
systemctl start mariadb
Regeln erstellen, falls notwendig
ufw allow 3306 ufw reload
Mit diesem neuen User kann nun auf die Datenbank von entfernten Clienten zugriffen werden. Speziell für Docker und phpmyadmin müssen noch einige ENV
nachdefiniert werden.
Weitere Hinweise findest Du hier:
https://github.com/phpmyadmin/docker