2012-04-17 15 views
41

Ich muss einen neuen MySQL-Benutzer mit eingeschränkter Berechtigung für eine vorhandene Amazon RDS-Instanz erstellen. Nachdem ich einige Fehlermeldungen erhalten hatte, konnte ich dies mit dem offiziellen MySQL-Administrator-Tool tun und der Benutzer erscheint nun in der Liste. Ich kann jedoch keine Schemaberechtigungen zuweisen, da alle Benutzer ausgegraut sind. Ich bin als "Hauptbenutzer" angemeldet, der beim Start der Instanz erstellt wurde. Ich bin mir nicht sicher, wo ich von hier aus hingehen soll. Ich habe die RDS-Kommandozeilen-Tools installiert, konnte dort aber auch nichts finden. IdeenErstellen eines neuen MySQL-Benutzers in Amazon RDS-Umgebung

Antwort

39

Ihre beste Wette ist wahrscheinlich, eine Verbindung zur Datenbank mit einem mysql-Befehlszeilenclient herzustellen und die SQL-Befehle aufzurufen, um einen neuen Benutzer zu erstellen und ihm Berechtigungen zuzuweisen.

Zum Beispiel könnten Sie etwas wie folgt ausführen:

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'@'%'; 

auf Fenster, die Sie den mysql.exe-Client verwenden können, wo auch immer das ist.

Nützliche Docs

AWS RDS-Sicherheitsgruppen Dokumentation (ein gemeinsamer Raum der Verwirrung): http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html

Benutzererstellung Dokumentation: http://dev.mysql.com/doc/refman/5.5/en/create-user.html

Privileg gewähren Dokumentation: http://dev.mysql.com/doc/refman/5.5/en/grant.html

+0

Nur eine Frage. Da der Host YOURRDSENDPOINT.rts.amazonaws.com ist, funktioniert das Gewähren von Privilegien für localhost? Ich habe versucht, dies für eine ganze Weile ohne Erfolg zu tun – nightgaunt

+0

Das wurde nur als Beispiel zur Verfügung gestellt, ich werde die Antwort zu einem Wildcard-Hostnamen aktualisieren. – andebauchery

7

Ich hatte der größte Erfolg mit MySQL Workbench und Ausführen von Raw SQL gegen RDS:

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

Das größere Problem war Berechtigungen. Zunächst habe ich versucht:

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

... was zu einem Zugriff verweigert Fehler führt.

Die lästige Erlaubnis ist "Super", die RDS mir nicht gibt, und der Reihe nach kann ich nicht gewähren. Als Ergebnis bin ich fest, Berechtigungen von Hand zu tun:

+3

Wenn Sie ALLE auf Ihrer Datenbank gewähren. * Zu 'foo' @ 'localhost' haben Sie möglicherweise mehr Erfolg. * würde Systemdatenbanken (Schemas) einschließen. – Mike

+0

'GRANT USAGE ON *. * TO 'foo' @ 'localhost' getestet auf rds mariadb, ich denke, mysql sollte das gleiche sein. siehe [MySQL auf Amazon RDS] (http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) – Leonmax

5

Ich habe mySQL Werkbank verwendet und es funktioniert gut. gehen Sie einfach zu Verwaltung/Benutzer und Privilegien, drücken Sie "Konto hinzufügen" Knopf unten links, und konfigurieren Sie. Sie können keine SUPER Privilegien geben, aber die meisten anderen

14

Ich weiß, dass dieser Thread ein paar Jahre alt ist und ich finde ihn immer wieder, also wollte ich ein Update über die AWS RDS und Benutzerberechtigungen bekommen.

Sie können GRANT ALL nicht für jeden Benutzer mit einem RDS verwenden. Wenn Sie die GRANT ALL-Anweisung verwenden, versuchen Sie auch, Global bereitzustellen (da AWS sie Super Permissions anruft), und mit der Art, auf der das AWS RDS-System eingerichtet wird, ermöglichen sie nicht das Zuweisen von globalen Optionen zu Benutzern.

Sie haben die Berechtigungen für die folgenden auszubrechen:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

Diese Benutzer des RDS verbinden zu können, ermöglicht, sobald die Sicherheitseinstellungen Setup sind der Zugriff von Ihren EC2-Instanzen zu ermöglichen oder aus dem Internet.

Ich hoffe, diese Informationen helfen anderen, die auf die gleichen Probleme stoßen, die ich mit den AWS RDS-Systemen sah.

Waldo

+0

Gute Erklärung, Prost. – dkanejs

+0

Es rettet mich auch. Ich war total frustriert, warum ich nach "GRANT ALL" immer noch keine Verbindung herstellen konnte. Jetzt ist es klar. –

+0

Guter Punkt! Fehler für 'ALL' ist:' ERROR 1045 (28000): Zugriff verweigert für Benutzer 'root' @ '%' (mit Passwort: YES) ' – crollywood

5

ich so erstellt:

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

Aber dann wies AWS diesem Benutzer anmelden. Und ich habe versucht, Admin-Privilegien zu ändern, aber keinen Erfolg. Und ich ändern Sie "localhost" zu "%" über MySQL Workbench. (Oder Sie können den Benutzer entfernen und neu erstellen) wie:

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

Dann erst kann mich durch diesen neuen Benutzer loggin.

Verwandte Themen