Autor Thema: Trigger: fehlende SUPER Privileges für das Einspielen meiner SQL Sicherung  (Gelesen 1147 mal)

Offline A.Büggeln - Profihost

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 503
    • Profil anzeigen
Bei Einspielen einer Datenbank Sicherung, welche Trigger enthält, kann es zu folgender Fehlermeldung kommen:

ERROR 1227 (42000) at line X: Access denied; you need (at least one of) the
SUPER privilege(s) for this operation

Diese Meldung ist typisch, wenn Trigger in der Datenbank Sicherung enthalten sind und Sie die Sicherung extern erstellt oder die Sicherung bei uns erzeugt und die Sicherung in eine neue / andere Datenbank einspielen wollen.

Auch wenn die Trigger z.B. am Anfang der Sicherung aufgeführt sind, aber die darin genutzten Tabellen erst später in der Sicherung angelegt werden, kann es zu Problemen kommen.

Diese Anleitung beugt beiden Problemen vor!

Zur Lösung muss die Sicherung nochmals mit dem Programm mysqldump erstellt werden.

Im folgenden Beispiel wird eine MySQL5 Datenbank Sicherung auf einem Server bei uns beschrieben:

* https://www.profihost.com/forum/mysql-datenbanken/unter-welchem-pfad-finde-ich-'mysqldump'/msg8103/#msg8103

Nacheinander werden nun erst die Daten, dann die Datenbank Struktur und am Ende die Trigger über eine SSH Sitzung gesichert.

Hinweis: USER dient als Platzhalter für den Benutzer der Quell-Datenbank.

/usr/local/mysql5/bin/mysqldump -u USER -p --no-create-info --skip-triggers --no-create-db usrdb_USER > data.sql
/usr/local/mysql5/bin/mysqldump -u USER -p --no-data --skip-triggers usrdb_USER > struct.sql
/usr/local/mysql5/bin/mysqldump -u USER -p --no-create-info --no-data --no-create-db usrdb_USER > trigger.sql

Ganz wichtig: Die Datei trigger.sql muss noch mit einem Texteditor geöffnet und pro Trigger der zur Ziel-Datenbank passende Benutzer im sog. DEFINER eingetragen werden.

Danach müssen die SQL Dateien in exakt folgender Reihenfolge in die neue Datenbank eingespielt werden:

Hinweis: USERNEU dient als Platzhalter für den Benutzer der Ziel-Datenbank.

/usr/local/mysql5/bin/mysql -u USERNEU -p usrdb_USERNEU < struct.sql
/usr/local/mysql5/bin/mysql -u USERNEU -p usrdb_USERNEU < data.sql
/usr/local/mysql5/bin/mysql -u USERNEU -p usrdb_USERNEU < trigger.sql
« Letzte Änderung: 02.02.2017 16:53 von A.Büggeln - Profihost »
Mit freundlichen Grüßen
Andreas Büggeln
Profihost Team

Impressum