Error de MySQL / Amazon RDS: "no tiene SÚPER privilegios…"


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

Hice con é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 esto .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)

Traté de GRANT SUPER.. en una variedad de maneras, pero estoy recibiendo errores cuando trato de hacer eso también. Escribir mysql > FLUSH privileges; tampoco funciona.

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

Author: tim peterson, 2012-07-22

5 answers

Per http://getasysadmin.com/2011/06/amazon-rds-super-privileges / , debe establecer log_bin_trust_function_creators a 1 en AWS console, 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á de los errores, pero continuará procesando el resto del archivo de volcado.

 43
Author: Ross Smith II,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-19 11:35:50
  1. Abra la consola web RDS.
  2. Abra la pestaña "Grupos de parámetros".
  3. Cree 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, déle 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 a '1'.
  5. Guarde los cambios.
  6. Abra la pestaña "Instancias". Expanda su instancia de MySQL y emita el "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". Expanda su instancia de MySQL y expanda la pestaña " Acción de instancia "y seleccione"Reiniciar".
 71
Author: arun-r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-04 11:14:14

El problema con los disparadores y los procedimientos almacenados en el archivo de volcado es que estas definiciones incluyen al usuario que debe crear el procedimiento almacenado, el DEFINIDOR. 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 DEFINIDOR usando sed o Perl y crear el procedimiento almacenado/disparador con el usuario que está realizando la importación.

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

Ahora debería poder cargar el volcado fijo file

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
 25
Author: anders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-03 07:14:31

Como se define en AWS documentation triggers, los procedimientos y las funciones están deshabilitados de forma predeterminada porque el registro binario está habilitado de forma predeterminada. La desactivación básicamente hace que su base de datos sea más segura, pero si se ha asegurado correctamente a través de la red, no importará.

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

Tampoco debe usar definidores al crear procedimientos. Un sed simple comando puede eliminarlo.

 3
Author: Josh Woodcock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-15 05:50:24

Además de editar

Log_bin_trust_function_creators = 1

Debe eliminar todo DEFINER desde su archivo de volcado, compruebe el siguiente enlace para SED comando que puede ayudar a limpiar su archivo de volcado sql.

Https://www.percona.com/blog/2014/07/02/using-mysql-triggers-and-views-in-amazon-rds/#comment-10968243

 2
Author: Jubba Smail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-03 17:20:01