2012-04-17 14 views
41

Devo creare un nuovo utente MySQL con autorizzazioni limitate su un'istanza Amazon RDS esistente. Dopo aver incontrato un paio di messaggi di errore ero in grado di farlo usando lo strumento ufficiale di amministrazione MySQL e l'utente ora appare nell'elenco. Tuttavia, non sono in grado di assegnare alcun privilegio di schema in quanto tutti gli utenti sono in grigio. Ho effettuato l'accesso come "utente principale" creato all'apertura dell'istanza. Non so da dove andare. Ho installato gli strumenti della riga di comando RDS ma non sono riuscito a rintracciare nulla. IdeeCreazione di un nuovo utente MySQL in ambiente Amazon RDS

risposta

39

La soluzione migliore è probabilmente quella di connettersi al database con un client della riga di comando mysql e chiamare i comandi SQL per creare un nuovo utente e assegnargli i privilegi.

Ad esempio, si potrebbe eseguire qualcosa di simile:

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

Su Windows è possibile utilizzare il client mysql.exe, ovunque essa sia.

Documenti Utili

AWS RDS gruppi di protezione di documentazione (uno spazio comune di confusione): http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html

documentazione creazione dell'utente: http://dev.mysql.com/doc/refman/5.5/en/create-user.html

Privilege concessione documentazione: http://dev.mysql.com/doc/refman/5.5/en/grant.html

+0

Solo una domanda. Poiché l'host è YOURRDSENDPOINT.rds.amazonaws.com, concedere i privilegi alle opere di localhost? Ho cercato di ottenere questo risultato per un po 'senza successo – nightgaunt

+0

Questo è stato appena fornito come esempio, aggiornerò la risposta per utilizzare un nome host con caratteri jolly. – andebauchery

7

ho avuto il maggior successo con MySQL Workbench e l'esecuzione di SQL raw su RDS:

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

Il problema maggiore erano le autorizzazioni. Inizialmente ho provato:

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

... che genera un errore Accesso negato.

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

Il permesso fastidioso è "super", che RDS non mi dà, ea sua volta non può concedere. Come risultato, sono bloccato a fare le autorizzazioni a mano:

Grant SELECT on *.* to 'foo'@'localhost'; 
Grant INSERT on *.* to 'foo'@'localhost'; 
Grant CREATE on *.* to 'foo'@'localhost'; 
+3

se si concede TUTTO sul proprio database. * A 'foo' @ 'localhost' si può avere più successo. * includerebbe i database di sistema (schemi). – Mike

+0

'GRANT USAGE ON *. * TO 'foo' @ 'localhost'' testato su rds mariadb, penso che mysql dovrebbe essere lo stesso. vedi [MySQL su Amazon RDS] (http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) – Leonmax

5

Ho usato il mio workbench MySQL e funziona correttamente. basta andare su Gestione/Utenti e privilegi, premere il pulsante "Aggiungi account" in basso a sinistra e configurare. Non puoi concedere i privilegi SUPER, ma la maggior parte degli altri

14

So che questo thread ha un paio di anni e io continuo a trovarlo, quindi volevo ottenere un aggiornamento su AWS RDS e Autorizzazioni utente.

Non è possibile utilizzare GRANT ALL per qualsiasi utente con un RDS. Quando si utilizza la dichiarazione GRANT ALL, si sta tentando di fornire anche Global (poiché AWS li chiama Super Permissions) e con il modo in cui il sistema AWS RDS è configurato, non consente l'assegnazione di opzioni globali agli utenti.

dovete rompere le autorizzazioni per la seguente:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

Questo permetterà l'utente sia in grado di connettersi ai RDS una volta che le impostazioni di sicurezza sono stati impostati per consentire l'accesso da istanze EC2 o da Internet.

Spero che questa informazione sia di aiuto a chiunque stia incontrando gli stessi problemi riscontrati con i sistemi RDS di AWS.

Waldo

+0

Buona spiegazione, evviva. – dkanejs

+0

Mi salva anche. Ero totalmente frustrato perché dopo "GRANT ALL" non riesco ancora a connettermi. Ora è chiaro. –

+0

Buon punto! L'errore che ottieni per 'ALL' è:' ERRORE 1045 (28000): accesso negato per utente 'root' @ '%' (usando password: YES) ' – crollywood

5

ho creato in questo modo:

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

Ma poi, AWS rifiutato eseguire il login per quell'utente. E ho provato a cambiare i privilegi di amministratore, ma non il successo. E I cambia 'localhost' in '%' attraverso mysql workbench. (Oppure è possibile rimuovere l'utente e ricreare) come:

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

Solo allora ho potuto loggin attraverso questo nuovo utente.

Problemi correlati