Docker + MySQL: Die neue Version macht Probleme!

Seit meiner Erstkonfiguration eines Docker-Environment für Symfony 4.x Projekte läuft soweit alles gut. Trotzdem hatte ich heute mal den Versuch gestartet, alle beteiligten Container auf den neuesten Stand zu bringen. Für die bereits 7 Monate alten Versionen des MySQL und PhpMyAdmin Containers, wären die Sicherheitsupdates bestimmt gut, so dachte ich… Dass die neue MySQL Version mit meinem Docker Environment Probleme macht, fand ich sobald heraus.

Lädt man sich nun MySQL per $ docker pull mysql:latest herunter, erhält man bereits die neueste Version 8.*, die in Verbindung mit Docker noch einiges gut zu machen hat. Nach dem Start des Env und Aufruf der Seite: MySQL Error [2002]: Can't connect to local MySQL server. Na toll…

Man solle dem neuen MySQL noch etwas Zeit einräumen

Nach einigem Stöbern bei Onkel Google und Co. habe ich einige Empfehlungen gefunden, doch lieber auf ein Release 5.7.x zu setzen, welches definitiv stabil sei. Dafür muss man in der docker-compose.yml nur einen expliziten Tag für den Container angeben:

services:
    db:
        image: mysql:5.7
        container_name: my_mysql
        # ...

Wird das Env neu gestartet, zieht sich Docker das Image in Version 5.7.x und die Fehler sollten verschwinden. Bleibt jedoch immer noch ein „Connection-Error“ übrig, kann es nötig sein, das Volume des alten Containers zu entfernen. Dazu lässt man sich erst mit $ docker volume ls alle anzeigen, identifiziert das entsprechende und löscht es mit $ docker volume rm {volume}. Hierbei wird allerdings auch der gesamte Inhalt der DB entfernt! Man sollte also ein Backup bereithalten.

Ein Hinweis für später

Versucht man im MySQL-Container auf Version 8.x direkt mit $ mysql zu interagieren, wird bei vielen Befehlen (z.B. mysql> show databases;) ein Fehler The user specified as a definer ('mysql.infoschema'@'localhost') does not exist ausgeworfen. Grund ist hier wirklich ein fehlender Nutzer, der aber mit einigen Befehlen nachinstalliert werden kann:

$ docker exec -it my_mysql bash
$ mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql> exit
$ mysql_upgrade -u root -p

Quelle: https://stackoverflow.com/questions/49992868/mysql-errorthe-user-specified-as-a-definer-mysql-infoschemalocalhost-doe

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert