
Ich habe versucht, eine MySQL-Datenbank aus einer SQL-Datei im GCP-Speicher wiederherzustellen. Der Schritt bestand darin, meine Datenbanksicherungsdatei in den GCP-Speicher hochzuladen. Anschließend habe ich diese SQL-Datei in eine angegebene Datenbank innerhalb der GCP MySQL-Instanz importiert. Es dauerte eine Weile, bis die Ausnahme auftrat, die
Import error: exit status 1 ERROR 1227 (42000) at line 10871: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
dann habe ich versucht, dem Root oder einem anderen Benutzer Superrechte zu erteilen, aber das hat trotzdem nicht funktioniert. Ich konnte jedoch keine Superrechte erteilen. Ich habe keine Ahnung, wie ich dieses Problem lösen soll. Für jede Hilfe wäre ich sehr dankbar.
Update (17. Januar 2020): das Problem habe ich gelöst
Ich habe versucht, die Zeile zu finden, in der die Ausnahme aufgetreten ist
$ sed -n -e 10870p -e 10871p -e 10872p -e 10873p beispiel.sql
und ich fand
/*!50013 DEFINER= root
@ localhost
SQL-SICHERHEITS-DEFINER */
dann habe ich diesen Befehl verwendet, um die Anweisung zu entfernen, die das Problem hat
cat beispiel.sql | sed -e 's/DEFINER= root
@ localhost
//g' > beispiel-CLEANED.sql
dann ist es erledigt
Antwort1
Der CURRENT_USER
sollte über SUPER
Berechtigungen verfügen, der aktuelle DEFINER
hat sie jedoch nicht. Erstellen Sie einen erneuten Dump mit mysqldump --skip-definer
(wäre der geringste Aufwand). Wenn dies keine Option sein sollte, bearbeiten Sie den Dump und entfernen Sie entweder den DEFINER
oder ersetzen Sie alle Vorkommen durch CURRENT_USER
. Bestimmte SET
Anweisungen im Dump könnten möglicherweise ebenfalls das Problem verursachen.