Erreur MySQL / Amazon RDS: «Vous ne disposez pas de privilèges SUPER…»

Je tente de copier ma firebase database mysql depuis un Amazon EC2 vers un RDS:

J’ai réussi à faire un mysqldump de ma firebase database 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 dans ma nouvelle firebase database 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.. de diverses manières, mais j’obtiens des erreurs lorsque j’essaie de le faire aussi. Taper mysql > FLUSH privileges; ne fonctionne pas non plus.

Je suis un débutant mysql désolé pour une question si facile. Pensées?

Selon 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 rest du fichier de vidage, vous pouvez utiliser l’option -f :

 mysql -f my_database -u my_username -p -h my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql 

Le fichier -f signalera les erreurs, mais continuera à traiter le rest du fichier de vidage.

  1. Ouvrez la console Web RDS.
  2. Ouvrez l’onglet “Groupes de parameters”.
  3. Créez un nouveau groupe de parameters. Dans la boîte de dialog, sélectionnez la famille MySQL compatible avec la version de votre firebase database MySQL, donnez-lui un nom et confirmez. Sélectionnez le groupe de parameters que vous venez de créer et lancez «Modifier les parameters».
  4. Recherchez le paramètre ‘log_bin_trust_function_creators’ et définissez sa valeur sur ‘1’.
  5. Enregistrez les modifications.
  6. Ouvrez l’onglet “Instances”. Développez votre instance MySQL et lancez «Instance Action» nommée «Modify».
  7. Sélectionnez le groupe de parameters que vous venez de créer et activez «Appliquer immédiatement».
  8. Cliquez sur «Continuer» et confirmez les modifications.
  9. Attendez que l’opération “Modification” soit terminée.
  10. Encore une fois, ouvrez l’onglet “Instances”. Développez votre instance MySQL et développez l’onglet “Action Instance” et sélectionnez “Reboot”.

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 dont la procédure stockée doit être créée, le DEFINER. L’utilisateur n’existe probablement pas dans le RDS, une erreur est alors générée. Pour pouvoir charger le fichier de vidage, vous pouvez supprimer le DEFINER en utilisant sed ou Perl et créer la procédure / sortinggger stockée avec l’utilisateur qui effectue l’importation.

 perl -pe 's/\sDEFINER=`[^`]+`@`[^`]+`//' < mysqldump.sql > mysqldump.fixed.sql 

Vous devriez maintenant pouvoir charger le fichier de vidage fixe

 mysql my_database -u my_username -p -h rds_host < mysqldump.fixed.sql 

Comme indiqué dans la réponse précédente, vous devez définir le paramètre DB:

 log_bin_trust_function_creators = 1 

Comme défini dans la documentation AWS, les déclencheurs, procédures et fonctions sont désactivés par défaut, car la journalisation binary est activée par défaut. Désactiver la firebase database rend votre firebase database plus sécurisée, mais si vous avez correctement sécurisé via le réseau, cela n’aura aucune importance.

Suivez ces étapes et votre problème sera résolu https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/

En outre, vous ne devriez pas utiliser de définitions lors de la création de procédures. Une simple commande sed peut la supprimer.

En plus de l’édition

log_bin_trust_function_creators = 1

vous devez supprimer tous les fichiers DEFINER de votre fichier de vidage, consultez 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-sortingggers-and-views-in-amazon-rds/#comment-10968243