J'essaie de copier ma base de données mysql d'un Amazon EC2 vers un RDS:
J'ai réussi à faire une mysqldump
de ma base de données dans mon dossier racine en utilisant ceci:
root@ip-xx-xx-xx-xx:~# mysqldump my_database -u my_username -p > my_database.sql
Ensuite, j'ai essayé de transférer ce fichier .sql vers ma nouvelle base de données RDS:
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
Malheureusement, je reçois le message d'erreur suivant:
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)
J'ai essayé de GRANT SUPER..
différentes manières, mais j'obtiens des erreurs lorsque j'essaie de le faire aussi. La frappe mysql > FLUSH privileges;
ne fonctionne pas non plus.
Je suis un débutant mysql, désolé pour une question aussi simple. Pensées?
mysql
amazon-ec2
amazon-web-services
amazon-rds
grant
Tim Peterson
la source
la source
GRANT SUPER
sur RDS. RDS n'offre aucun moyen d'obtenir des privilèges SUPER.sql
fichier a uneCREATE FUNCTION
déclaration qui nécessite un utilisateur privilégié. voir çaRéponses:
Par http://getasysadmin.com/2011/06/amazon-rds-super-privileges/ , vous devez définir
log_bin_trust_function_creators
sur 1 dans la console AWS , pour charger votre fichier de vidage sans erreur.Si vous souhaitez ignorer ces erreurs et charger le reste du fichier de vidage, vous pouvez utiliser l'
-f
option:Le
-f
rapportera des erreurs, mais continuera de traiter le reste du fichier de vidage.la source
-f
n'a pas aidé. J'ai eu la même erreur. En utilisant votre lien, j'ai des problèmes avec la syntaxe des outils RDS Cli. Cela signifie que lorsque je vais modifier les privilèges, j'obtiens l'erreur suivante: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"
je sais qu'il doit s'agir d'un problème de citation ou de double tiret, mais aucun de ces types de changements ne fonctionne jusqu'à présent, ugh!-f
option ne fera pas disparaître les erreurs, elle permettra simplement de traiter les instructions SQL non offensantes du fichier. D'après ce que j'ai lu, RDS s'étouffe sur les procédures stockées dans le fichier de vidage. Essayez de créer un fichier de vidage sans procédures de stockage et voyez si cela se charge bien:mysqldump --routines=0 --triggers=0 --events=0 my_database -u my_username -p
-f
option. La deuxième phase pourrait être de vider uniquement les routines / processus stred, etc. séparémentla source
Le problème avec les déclencheurs et les procédures stockées dans le fichier de vidage est que ces définitions incluent l'utilisateur par lequel la procédure stockée doit être créée, le DEFINER. L'utilisateur n'existe probablement pas dans le RDS, une erreur est donc générée. Pour pouvoir charger le fichier de vidage, vous pouvez supprimer DEFINER à l'aide de sed ou Perl et créer la procédure stockée / déclencheur avec l'utilisateur qui effectue l'importation.
Vous devriez maintenant pouvoir charger le fichier de vidage fixe
Comme indiqué dans la réponse précédente, vous devez définir le paramètre DB:
la source
OldDefiner
@localhost
/ DEFINER =NewDefiner
@localhost
/ g' ./TargetSqlFile.sqlPour moi, il n'y avait que 2 commandes dans mon fichier de vidage qui nécessitaient des privilèges SUPER:
SET @@GLOBAL.gtid_purged
SET @@SESSION.SQL_LOG_BIN
Selon la documentation mysqldump, vous pouvez les désactiver avec
--set-gtid-purged=OFF
.Puis en regardant man mysqldump :
J'ai donc décidé d'ajouter
--set-gtid-purged=OFF
à mamysqldump
commande et ensuite j'ai pu importer avec succès le fichier de vidage résultant.la source
Comme défini dans la documentation AWS, les déclencheurs, les procédures et les fonctions sont désactivés par défaut car la journalisation binaire est activée par défaut. La désactivation rend votre base de données plus sécurisée, mais si vous l'avez correctement sécurisée via le réseau, cela n'aura pas d'importance.
Suivez ces étapes et votre problème sera résolu https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/
Vous ne devez pas non plus utiliser de définisseurs lors de la création de procédures. Une simple commande sed peut le supprimer.
la source
En plus de l'édition
vous devez supprimer tous les DEFINER de votre fichier de vidage, vérifiez le lien suivant pour la commande SED qui peut vous aider à nettoyer votre fichier de vidage sql.
https://www.percona.com/blog/2014/07/02/using-mysql-triggers-and-views-in-amazon-rds/#comment-10968243
la source
Après avoir utilisé la réponse arun-r, si le problème n'est pas résolu, vous devez modifier votre fichier de vidage. C'est simple.
Dans le fichier de vidage, vous trouverez des lignes comme:
Vous devez remplacer:
username_from_dumped_database
par votre nom d'utilisateur sur la base de données rds.host_from_dumped_databse
par%
Je ne sais pas pourquoi mais cette astuce a fonctionné pour moi. Un simple éditeur de texte suffit pour cela.
la source