das Backup-Tool Akeeba arbeitet korrekt, wenn die Datenbank beim Hoster unter PHP 8.0 läuft. Ist hingegen PHP 8.1 festgelegt, scheppert’s. (Gibt noch mehr Software, wo das passiert). Der Autor von Akeeba sagt, die Fehlermeldung käme gar nicht aus Akeeba, sondern vom DBMS des Hosters. Das lässt mich doch stark vermuten, dass hier im PHP etwas nicht so tut wie es soll.
Es ist nicht meine Absicht, hier etwas zu reparieren, mir langte schon, wenn ich wüsste, wo man solche Fehler meldet.
Direkt Fehler melden kannst du hier: GitHub · Where software is built
Vielleicht suchst du aber auch vorher dort, möglicherweise ist der Fehler bereits bekannt?
Was ist denn die Fehlemeldung. Ich halte es doch für sehr unwahrscheinlich, dass PHP hier das Problem ist. Es ist viel wahrscheinlihcer, dass die Anwendung einen Bug hat.
Hier die Meldung (hab’s vergessen):„akeeba Unable to connect to the Database: Access denied; you need (at least one of) the SUPER privilege(s) for this operation“
DIe Sache betrifft das Zusammenspiel von Akeeba Backup, Akeeba Kickstart und dem DBMS. Laut Auskunft des Autors von Kickstart müssen die PHP-Versionen dieser 3 Komponenten irgendwie zusammenpassen (irgendwie nicht näher beschrieben). *)
Rezept: Alles wegschmeißen, Backup neu erstellen, diesen mit der neuesten Version von Kickstart einpielen, und schon geht’s. Was da im Detail abläuft, weiß keiner wirklich, ebenso wenig, was „SUPER privilege(s)“ sind.
*) Das kann natürlich zum Problem werden, wenn zwischen Backup erstellen und zurücksichern eine längere Zeit vergeht.
Das ist aber keine PHP-Meldung. Das ist ne MySQL-Meldung. Da fehlt eine Datenbankberechtigung. Das steht doch alles da. Kann nicht mit der Datenbank verbinden, weil Zugriff verweigert. Wieso sieht der Hersteller der Software das nicht?
MySQL hat mit Version 8.0.21 da was geändert. Zumindest für mysqldump gilt das jetzt.
mysqldump requires at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, LOCK TABLES if the --single-transaction option is not used, and (as of MySQL 8.0.21) PROCESS if the --no-tablespaces option is not used. Certain options might require other privileges as noted in the option descriptions.
Das muss mit dir nichts zu tun haben. Aber es zeigt, dass sich MySQL einen Dreck um semantische Versionierung kümmert und sowas auch mal zwischendrin verschärft.
Aber nochmal: Das müsste dem Autor von Kickstart aber auch sofort anhand der Fehlermeldung ersichtlich sein.
Ok, das leuchtet ein. Aber warum tritt dann der Fehler nur auf, wenn der Webserver mit PHP 8.1 läuft, nicht bei 8.0? Der MySQL-Server, der die DB-Privilegien verwaltet, sollte doch von der verwendeten PHP-Version unabhängig sein.
Ist das sicher, dass auf dem Webserver mit 8.0 keine ältere MySQL-Version läuft? Und was natürlich sein kann ist, dass bei 8.1 Fehler in der Datenbankverbindung als Error angezeigt werden und in 8.0 nur als Warnung. Das kommt ein bisschen auf den Treiber an.
Bei PDO gab es da mal ne Änderung am default-Wert aber das war schon in 8.0
Es könnte auch sein, dass die Berechtigung schon immer fehlt, das aber nicht dem user gezeigt wurde. Das sind alles Spekulationen, nichts davon ist ein PHP-Problem.
Im Übrigen ist es ein echt schlechtes Zeichen, wenn eine Backup-Anwendung mehr Rechte auf der Datenbank haben will als SHOW_TABLES und SELECT und vielleicht noch ein paar andere lesende Rechte. Warum sollte ein Backup SUPER Privilegien brauchen? Das spricht eindeutig nicht für diese Backupsoftware und wäre für mich ein red flag. Ein Fehler in dieser Anwendung kann dir die komplette Datenbank löschen oder im Internet exponieren. Wozu??