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?
- Abra la consola web RDS.
- Abra la pestaña "Grupos de parámetros".
- 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".
- Busque el parámetro ''log_bin_trust_function_creators'' y establezca su valor en ''1''.
- Guarde los cambios.
- Abra la pestaña "Instancias". Expande tu instancia de MySQL y publica la "Acción de instancia" llamada "Modificar".
- Seleccione el Grupo de Parámetros recién creado y habilite "Aplicar Inmediatamente".
- Haga clic en "Continuar" y confirme los cambios.
- Espere a que se complete la operación de "Modificación".
- De nuevo, abra la pestaña "Instancias". Expande tu instancia de MySQL y expande la pestaña "Acción de instancia" y selecciona "Reiniciar".
Además de editar
log_bin_trust_function_creators = 1
necesita eliminar todo el DEFINER de su archivo de volcado; consulte el siguiente enlace para obtener el comando SED que puede ayudar a limpiar su archivo de volcado sql.
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.