Ich versuche, meine MySQL-Datenbank von einem Amazon EC2 auf ein RDS zu kopieren:
Ich habe erfolgreich eine mysqldump
meiner Datenbanken in meinem Stammordner erstellt:
root@ip-xx-xx-xx-xx:~# mysqldump my_database -u my_username -p > my_database.sql
Dann habe ich versucht, diese .sql-Datei in meine neue RDS-Datenbank zu übertragen:
root@ip-xx-xx-xx-xx:~# mysql my_database -u my_username -p -h
my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql
Leider erhalte ich folgende Fehlermeldung:
You do not have the SUPER privilege and binary logging is enabled
(you *might* want to use the less safe log_bin_trust_function_creators variable)
Ich habe es auf GRANT SUPER..
verschiedene Arten versucht, aber ich bekomme Fehler, wenn ich das auch versuche. Das Tippen mysql > FLUSH privileges;
funktioniert auch nicht.
Ich bin ein MySQL-Anfänger und entschuldige mich für diese einfache Frage. Gedanken?
mysql
amazon-ec2
amazon-web-services
amazon-rds
grant
tim peterson
quelle
quelle
GRANT SUPER
auf RDS. RDS bietet keine Möglichkeit, SUPER-Berechtigungen zu erhalten.sql
Datei eineCREATE FUNCTION
Anweisung, die einen privilegierten Benutzer benötigt. siehe diesAntworten:
Gemäß http://getasysadmin.com/2011/06/amazon-rds-super-privileges/ müssen Sie
log_bin_trust_function_creators
in der AWS-Konsole 1 festlegen , um Ihre Dump-Datei fehlerfrei zu laden.Wenn Sie diese Fehler ignorieren und den Rest der Speicherauszugsdatei laden möchten, können Sie die folgende
-f
Option verwenden:Der
-f
meldet Fehler, verarbeitet aber den Rest der Dump-Datei weiter.quelle
-f
nicht geholfen. Ich habe den gleichen Fehler bekommen. Bei Verwendung Ihres Links habe ich Probleme mit der Syntax der RDS Cli-Tools. Das heißt, wenn ich gehe, um die Berechtigungen zu ändern, erhalte ich den folgenden Fehler:rds-modify-db-parameter-group: Malformed input-Unrecognized option: -–parameters=name=log_bin_trust_function_creators, Usage: rds-modify-db-parameter-group DBParameterGroupName --parameters "name=value, value=value, method=value" [ --parameters "name=value, value=value, method=value" ...] [General Options]
./rds-modify-db-parameter-group mygroup -–parameters "name=log_bin_trust_function_creators, value=on, method=immediate" –I="accesskeyxxxxxx" –S="secretkeyxxxxxxxx"
Ich weiß, dass es sich um ein Zitat oder ein Double-Dash-Problem handeln muss, aber keine dieser Arten von Änderungen funktioniert bisher, ugh!-f
Option lässt die Fehler nicht verschwinden, sondern ermöglicht lediglich die Verarbeitung der nicht störenden SQL-Anweisungen in der Datei. Nach dem, was ich gelesen habe, verschluckt sich RDS an gespeicherten Prozeduren in der Dump-Datei. Versuchen Sie, eine Dump-Datei ohne Speicherprozeduren zu erstellen, undmysqldump --routines=0 --triggers=0 --events=0 my_database -u my_username -p
-f
Option alle Daten laden . Die zweite Phase könnte darin bestehen, nur Routinen / Stred Proc usw. separat zu sichernquelle
Das Problem mit Triggern und gespeicherten Prozeduren in der Speicherauszugsdatei besteht darin, dass diese Definitionen den Benutzer DEFINER enthalten, von dem die gespeicherte Prozedur erstellt werden soll. Der Benutzer ist höchstwahrscheinlich nicht im RDS vorhanden, sodass ein Fehler ausgelöst wird. Um die Dump-Datei laden zu können, können Sie den DEFINER mit sed oder Perl entfernen und die gespeicherte Prozedur / den gespeicherten Trigger mit dem Benutzer erstellen, der den Import ausführt.
Jetzt sollten Sie in der Lage sein, die feste Dump-Datei zu laden
Wie in der vorherigen Antwort erwähnt, sollten Sie den DB-Parameter einstellen:
quelle
OldDefiner
@localhost
/ DEFINER =NewDefiner
@localhost
/ g' ./TargetSqlFile.sqlFür mich gab es nur 2 Befehle in meiner Dump-Datei, für die SUPER-Berechtigungen erforderlich waren:
SET @@GLOBAL.gtid_purged
SET @@SESSION.SQL_LOG_BIN
Laut den mysqldump-Dokumenten können Sie diese mit deaktivieren
--set-gtid-purged=OFF
.Dann schau dir Mann mysqldump an :
Also habe ich beschlossen,
--set-gtid-purged=OFF
meinemmysqldump
Befehl etwas hinzuzufügen , und dann konnte ich die resultierende Dump-Datei erfolgreich importieren.quelle
Wie in der AWS-Dokumentation definiert, sind Trigger, Prozeduren und Funktionen standardmäßig deaktiviert, da die binäre Protokollierung standardmäßig aktiviert ist. Durch Deaktivieren wird Ihre Datenbank grundsätzlich sicherer, aber wenn Sie ordnungsgemäß über das Netzwerk gesichert haben, spielt dies keine Rolle.
Befolgen Sie diese Schritte und Ihr Problem wird behoben. Https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/
Außerdem sollten Sie beim Erstellen von Prozeduren keine Definierer verwenden. Ein einfacher sed-Befehl kann es entfernen.
quelle
Neben der Bearbeitung
Sie müssen alle DEFINER aus Ihrer Dump-Datei entfernen. Überprüfen Sie den folgenden Link für den SED- Befehl, der Ihnen beim Bereinigen Ihrer SQL-Dump-Datei helfen kann.
https://www.percona.com/blog/2014/07/02/using-mysql-triggers-and-views-in-amazon-rds/#comment-10968243
quelle
Wenn das Problem nach der Verwendung von arun-r nicht behoben ist, müssen Sie Ihre Dump-Datei ändern. Es ist einfach.
In der Dump-Datei finden Sie Zeilen wie:
Sie müssen ersetzen:
username_from_dumped_database
durch Ihren Benutzernamen in der rds-Datenbank.host_from_dumped_databse
durch%
Ich weiß nicht warum, aber dieser Trick hat bei mir funktioniert. Dazu reicht ein einfacher Texteditor aus.
quelle