Datenbank kann auf Plesk-Server nicht erstellt oder gelöscht werden

Datenbank kann auf Plesk-Server nicht erstellt oder gelöscht werden

Heute wurde mir klar, dass ich auf meinem Plesk-Server keine der Datenbanken hinzufügen oder löschen kann, die zu einem meiner Kunden gehören.

Ich habe diesen Fehler erhalten:

Fehler: Einige der ausgewählten Datenbanken können nicht entfernt werden. Der als Definierer angegebene Benutzer ('root'@'localhost') existiert nicht

Also habe ich diesen Fix gefunden und ausgeführt:

# plesk db
# CREATE USER 'root'@'localhost' IDENTIFIED BY 'typepasswordhere';

Wenn ich jetzt versuche, eine Datenbank hinzuzufügen oder zu entfernen, erhalte ich eine neue Fehlermeldung:

Fehler: Verbindung zum Datenbankserver fehlgeschlagen: Ansicht „mysql.user“ verweist auf ungültige Tabelle(n) oder Spalte(n) oder Funktion(en), oder der Definierer/Aufrufer der Ansicht hat nicht die Rechte, diese zu verwenden.

(Ich bin nicht sicher, ob es damit zusammenhängt oder nicht, aber ich habe MariaDB vor ein paar Tagen aktualisiert. Ich bin mir aber ziemlich sicher, dass ich danach eine neue Datenbank erstellt habe.)

CentOS Linux 7.7.1908 (Core) Plesk Onyx Version 17.8.11 Update Nr. 80 mysql 10.4.11-1.el7.centos 10.4.11-MariaDB MariaDB-Server

Antwort1

Etwas spät, aber vielleicht für jemand anderen nützlich.

Es liegt ein gemeldeter MariaDB-Fehler vor, bei dem die von Plesk erforderliche sichere Installation nicht ordnungsgemäß funktioniert.

Ab 10.4 bleibt mysql_secure_installation ganz am Anfang der Ausführung hängen, wenn die Datenbank nicht über root@localhost verfügt und das Skript unter einem anderen Superuser ausgeführt wird.

Dies führt dazu, dass es nicht möglich ist, den Definierer von „root“ auf einen anderen Benutzer umzustellen (Administrator, wie es von Plesk verlangt wird).

https://jira.mariadb.org/browse/MDEV-22486

Sie haben keinen Root-Benutzer, da dieser bei der ersten Plesk-Installation in den Administratorbenutzer umbenannt wurde

Aus diesem Grund konnte Plesk keine Verbindung zur Datenbank herstellen, da der Definierer nicht von Root auf Admin geändert wurde, da die sichere Installation während der Installation oder Aktualisierung fehlgeschlagen ist.

Und jede Aktion schlägt mit diesem Fehler fehl:

[root@hostname ~]# plesk db
...
MariaDB [psa]> SELECT User FROM mysql.user;
ERROR 1449 (HY000): The user specified as a definer ('root'@'localhost') does not exist

Die Lösung hierfür besteht darin, einen root@localhost-Benutzer zu erstellen:

MariaDB [psa]> CREATE USER root@localhost IDENTIFIED VIA unix_socket USING 'invalid';
Query OK, 0 rows affected (0.015 sec)

Um diesen Fehler zu vermeiden:

Fehler: Verbindung zum Datenbankserver fehlgeschlagen: Ansicht „mysql.user“ verweist auf ungültige Tabelle(n) oder Spalte(n) oder Funktion(en), oder der Definierer/Aufrufer der Ansicht hat nicht die Rechte, diese zu verwenden.

Berechtigungen erteilen:

MariaDB [psa]> GRANT SELECT ON *.* TO root@localhost IDENTIFIED VIA unix_socket; Query OK, 0 rows affected (0.533 sec)simply grant privileges for the new user:

Damit funktionieren die Datenbankoperationen in Plesk. Um jedoch einen unnötigen Benutzer mit vollem Datenbankzugriff zu entfernen (gut für die Sicherheit), müssen Sie den DEFINER wieder auf admin ändern (ich habe es manuell in der Datei gemacht, aber Sie können es auch über ALTER VIEW in MySQL durchführen):

[root@localhost]# grep root /var/lib/mysql/mysql/*.frm
user.frm:definer_user=root
>>>
[root@localhost]# grep root /var/lib/mysql/mysql/*.frm
user.frm:definer_user=admin

Tabellen leeren, um Änderungen anzuwenden:
MariaDB [psa]> FLUSH TABLES;

Query OK, 0 rows affected (0.003 sec)

Stellen Sie anschließend sicher, dass der Definierer geändert wird:

MariaDB [psa]> SHOW CREATE VIEW mysql.user;
...
| user | CREATE ALGORITHM=UNDEFINED DEFINER=`admin`@`localhost` 

Und entfernen Sie den Root-Datenbankbenutzer:

MariaDB [psa]> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'root'@'localhost';

Query OK, 0 rows affected (0.114 sec)



MariaDB [psa]> DROP USER 'root'@'localhost';

Query OK, 0 rows affected (0.025 sec)

Überprüfen Sie die Plesk DB-Aktionen und stellen Sie sicher, dass sie alle ordnungsgemäß funktionieren.

verwandte Informationen