Ошибка MySQL / Amazon RDS: "у вас нет супер привилегий…"



Я пытаюсь скопировать мою базу данных mysql из Amazon EC2 в RDS:



я успешно сделал mysqldump из моей базы данных в мою корневую папку с помощью этого:



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


затем я попытался передать это .sql-файл в мою новую базу данных 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


к сожалению, я получаю следующее сообщение об ошибке:



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)


пробовал GRANT SUPER.. различными способами, но я получаю ошибки, когда я пытаюсь сделать это. Набрав mysql > FLUSH privileges; не работает.



Я новичок mysql, поэтому извините за такой простой вопрос. Мысли?

707   5  

5 ответов:

за http://getasysadmin.com/2011/06/amazon-rds-super-privileges/, вам нужно установить log_bin_trust_function_creators 1 в консоль AWS, чтобы загрузить файл дампа без ошибок.

если вы хотите игнорировать эти ошибки и загрузить остальную часть файла дампа, вы можете использовать :

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

The -f сообщит об ошибках, но продолжит обработку оставшейся части файла дампа.

  1. откройте веб-консоль RDS.
  2. откройте вкладку "Группы параметров".
  3. создать новую группу параметров. В диалоговом окне выберите семейство MySQL, совместимое с вашей версией базы данных MySQL, дайте ему имя и подтвердите. Выберите только что созданную группу параметров и выдайте "редактировать параметры".
  4. найдите параметр ' log_bin_trust_function_creators 'и установите для него значение'1'.
  5. Сохранить изменения.
  6. откройте вкладку "экземпляры". Разверните свой экземпляр MySQL и выполните "действие экземпляра" с именем "изменить".
  7. выберите только что созданную группу параметров и включите "применить немедленно".
  8. нажмите на кнопку "Продолжить" и подтвердите изменения.
  9. дождитесь завершения операции "изменение".
  10. снова откройте вкладку "экземпляры". Разверните свой экземпляр MySQL и разверните вкладку " действие экземпляра "и выберите"перезагрузка".

проблема с триггерами и хранимыми процедурами в файле дампа заключается в том, что эти определения включают пользователя, которым должна быть создана хранимая процедура, определитель. Пользователь, скорее всего, не существует в RDS, поэтому возникает ошибка. Чтобы загрузить файл дампа, вы можете удалить определитель с помощью sed или Perl и создать хранимую процедуру/триггер с пользователем, который выполняет импорт.

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

Теперь вы должны быть в состоянии загрузить фиксированной свалку файл

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

как сказано в предыдущем ответе, вы должны установить параметр DB:

log_bin_trust_function_creators = 1

Как определено в документации AWS триггеры, процедуры и функции по умолчанию отключены, поскольку по умолчанию включено двоичное ведение журнала. Отключение в основном делает вашу БД более безопасной, но если вы правильно защищены через сеть, это не будет иметь значения.

выполните следующие шаги, и ваша проблема будет решена https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-functions/

также вы не должны использовать определители при создании процедуры. Простая команда sed может удалить его.

В дополнение к редактированию

log_bin_trust_function_creators = 1

вам нужно удалить все DEFINER из вашего файла дампа, проверьте следующую ссылку для SED команда, которая может помочь очистить файл дампа sql.

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

Comments

    Ничего не найдено.