57 votes

Puis-je CRÉER DÉCLENCHEUR dans une base de données rds?

Je suis en train de créer un trigger sur une table dans ma base de données Amazon RDS, et je n'arrive pas à le réaliser.

J'ai essayé de créer un trigger sur une table dans le client mysql que j'utilise (Navicat), et a obtenu l'erreur que j'avais besoin de la SUPER privilège de le faire. Après quelques recherches, j'ai trouvé que vous pourriez SET GLOBAL log_bin_trust_function_creators = 1 de contourner ce problème. J'ai essayé en suivant ces instructions: http://getasysadmin.com/2011/06/amazon-rds-super-privileges/ (et puis en redémarrant le serveur de base de données pour faire bonne mesure), mais pas de chance.

J'ai aussi essayé de créer le déclencheur et le réglage de la variable via le mot de commande, afin d'assurer Navicat n'était pas ajouter quoi que ce soit indésirables de mes commandes sql, mais qui a échoué, trop. Il semble également partir à la recherche qu'il n'y a aucun moyen de vous accorder le SUPER privilège.

Alors ... est la création d'un déclencheur possible RDS?

120voto

foxybagga Points 1345

Son facile!

Ouvrez le RDS de la console web.

Ouvrez le "Paramètres" Groupes d'onglet.

Créer un nouveau Groupe de paramètres. Dans la boîte de dialogue, sélectionnez la base de données MySQL famille compatible de votre base de données MySQL version, donnez-lui un nom et validez.

Sélectionnez la venez de créer Paramètre de Groupe et à la question "Modifier les Paramètres".

Regardez le paramètre 'log_bin_trust_function_creators" et attribuez-lui la valeur "1".

Enregistrer les modifications.

Ouvrez le "Cas" de l'onglet. Développez votre instance MySQL et le problème de la "Exemple d'Action" nommé "Modifier".

Sélectionnez la juste créé Groupe de paramètres et activez l'option "Appliquer Immédiatement".

Cliquez sur "Continuer" pour confirmer les modifications.

Encore une fois, ouvrez les "Instances" de l'onglet. Développez votre instance MySQL et le problème de la "Exemple d'Action" nommé "Modifier".

N'oubliez pas: Ouvrez le "Cas" de l'onglet. Développez votre instance MySQL et le problème de la "Exemple d'Action" nommé "Reboot".

Via - http://techtavern.wordpress.com/2013/06/17/mysql-triggers-and-amazon-rds/

41voto

Garvice Points 405

Il n'est effectivement pas impossible, il faut juste beaucoup trop de travail supplémentaire.

Tout d'abord, il semble être impossible de mettre de la Super Privilèges au paramètre par défaut du groupe. Donc, ce que j'avais à faire était de créer un nouveau Paramètre DB groupe, soit par le biais de la Console, ou de la CLI.

Ce que j'ai trouvé, la clé est que par défaut, la région n'était pas de la région j'ai essayé d'utiliser, donc j'ai dû utiliser un --paramètre de région de l'appliquer pour le groupe dans la bonne région, où j'ai été le déploiement de mon Instance DB

rds-create-db-paramètre groupe-db-paramètre groupe-nom de permettre-ce qui déclenche la description du groupe de paramètres pour permettre déclencheurs " --région de votre région

Ensuite, j'ai dû alors créer un DB d'Instance qui a utilisé que groupe de paramètres. (Encore une fois par le biais de la console ou de la CLI)

rds-create-db d'instance

Ensuite, j'ai dû modifier le Paramètre de groupe pour permettre log_bin_trust_function_creators seulement réalisable par le biais de la CLI

rds-modifier-db-paramètre groupe-db-paramètre groupe-nom yourgroupname --région yourRegion --paramètres 'name=log_bin_trust_function_creators,valeur=true,la méthode=immédiat"

Enfin, j'ai dû modifier la création d'une Instance DB pour permettre à des déclencheurs, aussi CLI uniquement.

rds-modifier-db-exemple-db-instance-de l'identificateur de votre-db-instance-id --db-paramètre groupe-nom de permettre-ce qui déclenche appliquer immédiatement

2voto

Deepti Kohli Points 354

J'ai suivi ci-dessus, mais il ne fonctionne pas pour moi. J'ai passé presque une journée pour comprendre pourquoi ça ne fonctionne pas et maintenant je sais pourquoi. Je suis à la liste vers le bas les étapes que j'ai suivi pour le faire fonctionner.

Créé mysql paramètres de groupe à l'aide d'aws de la console web (assurez-vous qu'il devrait être de la même famille que le paramètre par défaut du groupe. Plus tôt, j'avais créé un groupe de paramètres, mais il avait des familles différentes et donc il n'a pas de travail. C'est l'étape critique.

À l'aide d'aws de la console web de changer la valeur de log_bin_trust_function_creators de 1

Appliquer le nouveau paramètre de groupe. C'est une autre étape critique

rds-modify-db-instance –I $AWS_ACCESS_KEY –S $AWS_SECRET_KEY –region $EC2_REGION \ –db-instance-identifier $DB_INSTANCE \
–db-parameter-group-name $DB_GROUPNAME \
–apply-immediately

Vous avez besoin RDSCli de - http://s3.amazonaws.com/rds-downloads/RDSCli.zip

Vérifiez si le paramètre groupe est associé à votre instance db

rds-describe-db-instances \
–I $AWS_ACCESS_KEY \
–S $AWS_SECRET_KEY \
–region $EC2_REGION

Et puis redémarrer avant de vous essayez de créer un déclencheur

rds-reboot-db-instance \
–I $AWS_ACCESS_KEY \
–S $AWS_SECRET_KEY \
–region $EC2_REGION  \
–db-instance-identifier $DB_INSTANCE

N'oubliez pas de dessous de la variable d'environnement avant de vous essayez de commandes ci-dessus.

export AWS_ACCESS_KEY='*****'
export AWS_SECRET_KEY='*****'
export EC2_REGION='region'
export AWS_RDS_BIN="$AWS_RDS_HOME/bin"
export PATH=$PATH:$AWS_RDS_BIN
export JAVA_HOME=c:/jdk1.6_25 (in most cases this is already set)

Grâce à http://blog.iprofs.nl/2013/03/20/rds-database-triggers-for-mysql/ pour plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X