pricing ec2 aws mysql amazon-ec2 amazon-web-services amazon-rds grant

aws - connect mysql amazon ec2



Error de MySQL/Amazon RDS: "no tienes privilegios SUPER..." (5)

Estoy intentando copiar mi base de datos mysql de Amazon EC2 a RDS:

mysqldump éxito un mysqldump de mi base de datos en mi carpeta raíz usando esto:

root@ip-xx-xx-xx-xx:~# mysqldump my_database -u my_username -p > my_database.sql

Luego traté de transferir este archivo .sql a mi nueva base de datos RDS:

root@ip-xx-xx-xx-xx:~# mysql my_database -u my_username -p -h my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql

Desafortunadamente, recibo el siguiente mensaje de error:

You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

Intenté GRANT SUPER.. en una variedad de formas, pero recibo errores cuando trato de hacerlo también. Escribiendo mysql > FLUSH privileges; tampoco funciona

Soy un principiante de MySQL, lo siento por una pregunta tan fácil. ¿Pensamientos?


  1. Abra la consola web RDS.
  2. Abra la pestaña "Grupos de parámetros".
  3. Crea un nuevo grupo de parámetros. En el cuadro de diálogo, seleccione la familia MySQL compatible con su versión de base de datos MySQL, asígnele un nombre y confirme. Seleccione el Grupo de Parámetros recién creado y emita "Editar Parámetros".
  4. Busque el parámetro ''log_bin_trust_function_creators'' y establezca su valor en ''1''.
  5. Guarde los cambios.
  6. Abra la pestaña "Instancias". Expande tu instancia de MySQL y publica la "Acción de instancia" llamada "Modificar".
  7. Seleccione el Grupo de Parámetros recién creado y habilite "Aplicar Inmediatamente".
  8. Haga clic en "Continuar" y confirme los cambios.
  9. Espere a que se complete la operación de "Modificación".
  10. De nuevo, abra la pestaña "Instancias". Expande tu instancia de MySQL y expande la pestaña "Acción de instancia" y selecciona "Reiniciar".


El problema con los desencadenantes y los procedimientos almacenados en el archivo de volcado es que estas definiciones incluyen al usuario para quien el procedimiento almacenado debe ser creado, el DEFINER. Lo más probable es que el usuario no exista en el RDS, por lo que se genera un error. Para poder cargar el archivo de volcado, puede eliminar el DEFINER usando sed o Perl y crear el procedimiento / activador almacenado con el usuario que está realizando la importación.

perl -pe ''s//sDEFINER=`[^`]+`@`[^`]+`//'' < mysqldump.sql > mysqldump.fixed.sql

Ahora debería poder cargar el archivo de volcado fijo

mysql my_database -u my_username -p -h rds_host < mysqldump.fixed.sql

Como se dijo en la respuesta anterior, debe establecer el parámetro DB:

log_bin_trust_function_creators = 1


Según http://getasysadmin.com/2011/06/amazon-rds-super-privileges/ , debe establecer log_bin_trust_function_creators en 1 en la consola de AWS , para cargar su archivo de volcado sin errores.

Si desea ignorar estos errores y cargar el resto del archivo de volcado, puede usar la opción -f :

mysql -f my_database -u my_username -p -h my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sql

El -f informará los errores, pero continuará procesando el resto del archivo de volcado.


Tal como se define en la documentación de AWS, los desencadenadores, los procedimientos y las funciones están deshabilitados de manera predeterminada porque el registro binario está habilitado de forma predeterminada. Inhabilitar básicamente hace que su base de datos sea más segura, pero si se ha asegurado adecuadamente a través de la red, no tendrá importancia.

Siga estos pasos y su problema se solucionará https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/

Además, no debe usar definidores al crear procedimientos. Un simple comando de sed puede eliminarlo.