Heim  >  Artikel  >  Datenbank  >  Wie entferne ich DEFINER-Klauseln aus MySQL-Dumps?

Wie entferne ich DEFINER-Klauseln aus MySQL-Dumps?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 07:11:29726Durchsuche

How to Remove DEFINER Clauses from MySQL Dumps?

Entfernen von DEFINER-Klauseln aus MySQL-Dumps

MySQL-Dumps enthalten oft DEFINER-Klauseln in CREATE VIEW- und CREATE PROCEDURE-Anweisungen, wie zum Beispiel „DEFINER=root @localhost". Diese Klauseln können in bestimmten Szenarien unerwünscht sein. In diesem Artikel werden Methoden zum Entfernen dieser Klauseln aus MySQL-Dump-Dateien untersucht.

Lösungen:

  1. Texteditor-Ersatz:

Öffnen Sie die Dump-Datei in einem Texteditor und führen Sie eine globale Suche und Ersetzung durch. Finden Sie alle Instanzen von „DEFINER=@“ und ersetzen Sie sie durch eine leere Zeichenfolge.

  1. Perl-Befehl:

Bearbeiten Sie die Dump-Datei mit Perl mit dem folgenden Befehl:

perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d[0-3].*[0-3]\`//g" mydatabase.sql

Dadurch werden alle DEFINER-Klauseln aus der Dump-Datei entfernt und ein Backup mit der Erweiterung „.bak“ erstellt.

  1. Sed Piping:

Leiten Sie die Ausgabe von mysqldump durch sed, um die DEFINER-Klauseln zu entfernen:

mysqldump ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > triggers_backup.sql

Dieser Befehl erstellt eine neue Dump-Datei mit dem Namen „triggers_backup.sql“, wobei die DEFINER-Klauseln entfernt werden.

Das obige ist der detaillierte Inhalt vonWie entferne ich DEFINER-Klauseln aus MySQL-Dumps?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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