2012-04-17 18 views
41

Necesito crear un nuevo usuario de MySQL con permiso limitado en una instancia existente de Amazon RDS. Después de encontrar un par de mensajes de error, pude hacer esto usando la herramienta oficial MySQL Administrator y el usuario ahora aparece en la lista. Sin embargo, no puedo asignar ningún privilegio de esquema ya que todos los usuarios están atenuados. He iniciado sesión como el "usuario maestro" creado cuando se lanzó la instancia. No estoy seguro de dónde ir desde aquí. Tengo las herramientas de línea de comandos de RDS instaladas, pero tampoco pude encontrar nada allí. IdeasCreación de un nuevo usuario de MySQL en el entorno de Amazon RDS

Respuesta

39

Su mejor opción es probablemente conectarse a la base de datos con un cliente de línea de comandos mysql y llamar a los comandos SQL para crear un nuevo usuario y asignarle privilegios.

Por ejemplo, es posible ejecutar algo como esto:

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

En las ventanas se podían usar el cliente mysql.exe, donde quiera que sea.

Docs útiles

AWS RDS grupos de seguridad documentación (un área común de confusión): http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html

documentación creación usuario: http://dev.mysql.com/doc/refman/5.5/en/create-user.html

Privilege concesión de documentación: http://dev.mysql.com/doc/refman/5.5/en/grant.html

+0

Solo una pregunta. Como el host es YOURRDSENDPOINT.rds.amazonaws.com, ¿otorga privilegios a localhost? He intentado hacer esto por bastante tiempo sin éxito. – nightgaunt

+0

Como ejemplo, actualizaré la respuesta para usar un nombre de host comodín. – andebauchery

7

tuve el mayor éxito usando MySQL Workbench y ejecutando SQL crudo contra RDS:

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

El problema más grande eran los permisos. Inicialmente probé:

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

... lo que da como resultado un error de acceso denegado.

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

El permiso problemático es "super", que RDS no me otorga y, a su vez, no puedo otorgar. Como resultado, estoy atrapado haciendo permisos a mano:

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

si otorga ALL en su base de datos. * A 'foo' @ 'localhost' puede tener más éxito. * incluiría bases de datos del sistema (esquemas). – Mike

+0

'USO DE SUBVENCIÓN EN *. * PARA 'foo' @ 'localhost'' probado en rds mariadb, creo que mysql debería ser el mismo. ver [MySQL en Amazon RDS] (http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) – Leonmax

5

He utilizado mySQL workbench y funciona bien. solo vaya a la administración/Usuarios y Privilegios, presione el botón "Agregar Cuenta" abajo a la izquierda, y configure. No puede otorgar privilegios SUPER, pero la mayor parte del resto

14

Sé que este hilo tiene un par de años y todavía lo sigo encontrando así que quería obtener una actualización sobre el AWS RDS y los Permisos de usuario.

No puede usar GRANT ALL para ningún usuario con un RDS. Cuando usa la declaración GRANT ALL, también está tratando de proporcionar Global (ya que AWS los llama Super Permissions) y con la forma en que está configurado el sistema AWS RDS, no permiten la asignación de opciones globales a los usuarios.

usted tiene que romper los permisos a lo siguiente:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

Esto permitirá a su usuario sea capaz de conectarse a la RDS una vez que los parámetros de seguridad están configurados para permitir el acceso desde sus instancias de EC2 o de Internet.

Espero que esta información ayude a cualquier otra persona que esté teniendo los mismos problemas que yo estaba viendo con los sistemas AWS RDS.

Waldo

+0

Buena explicación, aplausos. – dkanejs

+0

Me ahorra también. Estaba totalmente frustrado porque después de 'GRANT ALL' todavía no puedo conectarme. Ahora esta claro. –

+0

¡Buen punto! El error que obtiene para 'ALL' es:' ERROR 1045 (28000): Acceso denegado para el usuario 'root' @ '%' (usando la contraseña: YES) ' – crollywood

5

creé así:

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

Pero entonces, AWS rechazado para ingresar a ese usuario. Y traté de cambiar los privilegios de administrador, pero no el éxito. E I cambie 'localhost' a '%' a través de mysql workbench. (O puede quitar y volver a crear el usuario) como:

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

Sólo entonces pude loggin a través de este nuevo usuario.

Cuestiones relacionadas