Heim > Datenbank > MySQL-Tutorial > MySQL-Fehler 1449: Wie behebt man das Problem „Definer-Benutzer existiert nicht'?

MySQL-Fehler 1449: Wie behebt man das Problem „Definer-Benutzer existiert nicht'?

Mary-Kate Olsen
Freigeben: 2024-12-15 10:57:09
Original
399 Leute haben es durchsucht

MySQL Error 1449: How to Fix the

MySQL-Fehler 1449: Verständnis und Lösung des Definer-Benutzerproblems

Einführung

Bei der Arbeit mit MySQL können Benutzer auf Folgendes stoßen: eine Fehlermeldung, die darauf hinweist, dass der definierende Benutzer für ein Datenbankobjekt nicht existiert. Dieser Fehler, Code 1449, tritt typischerweise beim Importieren von Objekten aus einer anderen Datenbank oder einem anderen Server auf, bei dem der ursprüngliche definierende Benutzer nicht mehr existiert.

Ursachen

Der definierende Benutzer ist der Benutzer unter dem eine Datenbankansicht, ein Trigger oder eine Prozedur erstellt wurde. Wenn das Datenbankobjekt in ein anderes System importiert wird, muss der definierende Benutzer auch auf dem Zielsystem vorhanden sein. Wenn der definierende Benutzer nicht existiert, gibt MySQL den Fehler 1449 aus.

Lösungen

1. Ändern Sie den Definierer

Um dieses Problem zu beheben, können Sie den Definiererbenutzer in einen Benutzer ändern, der auf dem Zielsystem vorhanden ist. Dies kann während des Importvorgangs erfolgen, indem die DEFINER-Anweisung aus dem Dump entfernt wird.

Wenn das Objekt bereits importiert wurde, können Sie den Definierer später mit den folgenden Schritten ändern:

Für Ansichten:

  1. Generieren Sie damit die erforderlichen ALTER-Anweisungen Abfrage:
SELECT CONCAT("ALTER DEFINER=youruser@host VIEW ",
table_name, " AS ", view_definition, ";")
FROM information_schema.views
WHERE table_schema='your-database-name';
Nach dem Login kopieren
  1. Kopieren Sie die ALTER-Anweisungen und führen Sie sie aus.

Für gespeicherte Prozeduren:

UPDATE `mysql`.`proc` p SET definer = 'user@%' WHERE definer='root@%';
Nach dem Login kopieren

2. Erstellen Sie den fehlenden Benutzer

Wenn der definierende Benutzer auf dem Zielsystem nicht vorhanden ist, können Sie ihn mit der GRANT-Anweisung erstellen. Ersetzen Sie „someuser“ durch den Namen des fehlenden Benutzers:

GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
FLUSH PRIVILEGES;
Nach dem Login kopieren

Zusätzliche Überlegungen

  • Überlegen Sie, ob der Benutzer ALLE Berechtigungen benötigt oder ob eingeschränkte Berechtigungen dies tun würden ausreichend sein.
  • Aus Leistungsgründen wird empfohlen, die Anzahl der Definierer zu minimieren Benutzer.
  • Geben Sie beim Erstellen von Datenbankobjekten den definierenden Benutzer explizit an, um Probleme mit der Benutzerexistenz zu vermeiden.

Durch Befolgen dieser Schritte können Sie Fehler 1449 beheben und die Datenbank erfolgreich importieren oder verwalten Objekte, die definierende Benutzer haben.

Das obige ist der detaillierte Inhalt vonMySQL-Fehler 1449: Wie behebt man das Problem „Definer-Benutzer existiert nicht'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage