web-dev-qa-db-fra.com

Création d'un nouvel utilisateur MySQL dans l'environnement Amazon RDS

Je dois créer un nouvel utilisateur MySQL avec une autorisation limitée sur une instance Amazon RDS existante. Après avoir rencontré quelques messages d'erreur, j'ai été en mesure de le faire en utilisant l'outil officiel de l'administrateur MySQL et l'utilisateur apparaît maintenant dans la liste. Cependant, je ne peux pas attribuer de privilèges de schéma car tous les utilisateurs sont grisés. Je suis connecté en tant qu '"utilisateur principal" créé lors du lancement de l'instance. Je ne sais pas où aller d'ici. J'ai installé les outils de ligne de commande RDS mais je n'ai pas pu retrouver quoi que ce soit là-bas non plus. Des idées

56
Dan

Votre meilleur pari est probablement de vous connecter à la base de données avec un client en ligne de commande mysql et d'appeler les commandes SQL pour créer un nouvel utilisateur et lui attribuer des privilèges.

Par exemple, vous pouvez exécuter quelque chose comme ceci:

mysql -u [your_master_username] -p -h YOURRDSENDPOINT.rds.amazonaws.com

CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword';
GRANT SELECT ON [your_database].[some_table] TO 'jeffrey'@'%';

Sous Windows, vous pouvez utiliser le client mysql.exe, où qu'il se trouve.

Documents utiles

Documentation des groupes de sécurité AWS RDS (zone de confusion courante): http://docs.aws.Amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html

Documentation de création d'utilisateur: http://dev.mysql.com/doc/refman/5.5/en/create-user.html

Documentation d'octroi de privilèges: http://dev.mysql.com/doc/refman/5.5/en/grant.html

55
andebauchery

Je sais que ce fil a quelques années et je continue de le trouver, donc je voulais obtenir une mise à jour sur AWS RDS et les autorisations utilisateur.

Vous ne pouvez pas utiliser GRANT ALL pour tout utilisateur disposant d'un RDS. Lorsque vous utilisez le GRANT ALL instruction que vous essayez également de fournir Global (comme AWS les appelle Super Permissions) et avec la façon dont le système AWS RDS est configuré, ils ne permettent pas d'attribuer des options globales aux utilisateurs.

Vous devez répartir les autorisations comme suit:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

Cela permettra à votre utilisateur de se connecter au RDS une fois les paramètres de sécurité configurés pour autoriser l'accès à partir de vos instances EC2 ou d'Internet.

J'espère que ces informations aideront toute autre personne rencontrant les mêmes problèmes que ceux rencontrés avec les systèmes AWS RDS.

Waldo

33
Waldo

J'ai créé comme ça:

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'localhost';

Mais ensuite, AWS a refusé de se connecter à cet utilisateur. Et j'ai essayé de changer les privilèges d'administrateur, mais sans succès. Et je change 'localhost' en '%' via mysql workbench. (ou vous pouvez supprimer l'utilisateur et recréer) comme:

CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'%';

Alors seulement, j'ai pu me connecter via ce nouvel utilisateur.

En outre: Une fois que vous avez effectué cette modification, votre base de données a pu se connecter à partir de n'importe quelle adresse IP. Si vous devez améliorer la sécurité et restreindre l'IP d'accès (Ex: s'il s'agit d'une base de données intermédiaire), vous pouvez définir l'adresse de liaison dans le fichier my.cnf de votre serveur.

bind-address = votre.ip.add.ress

entrez la description du lien ici

11
Sadee

J'ai eu le plus de succès en utilisant MySQL Workbench et en exécutant du SQL brut contre RDS:

CREATE USER 'foo'@'localhost' IDENTIFIED BY 'password';

Le plus gros problème était les autorisations. Au départ, j'ai essayé:

Grant ALL on *.* to 'foo'@'localhost'

... ce qui entraîne une erreur d'accès refusé.

Error Code: 1045. Access denied for user 'foo'@'%' (using password: YES)

L'autorisation gênante est "super" que RDS ne me donne pas, et en retour je ne peux pas l'accorder. En conséquence, je suis coincé à faire les autorisations à la main:

Grant SELECT on *.* to 'foo'@'localhost';
Grant INSERT on *.* to 'foo'@'localhost';
Grant CREATE on *.* to 'foo'@'localhost';
8
Chris M.

J'ai utilisé le plan de travail mySQL et cela fonctionne très bien. allez simplement dans la gestion/Utilisateurs et privilèges, appuyez sur le bouton "Ajouter un compte" en bas à gauche et configurez. Vous ne pouvez pas accorder de privilèges SUPER, mais la plupart du reste

5
user2349783