Ошибка 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, поэтому извините за такой простой вопрос. Мысли?
5 ответов:
за http://getasysadmin.com/2011/06/amazon-rds-super-privileges/, вам нужно установить
log_bin_trust_function_creators1 в консоль AWS, чтобы загрузить файл дампа без ошибок.если вы хотите игнорировать эти ошибки и загрузить остальную часть файла дампа, вы можете использовать :
mysql -f my_database -u my_username -p -h my_new_database.xxxxxxxxx.us-east-1.rds.amazonaws.com < my_database.sqlThe
-fсообщит об ошибках, но продолжит обработку оставшейся части файла дампа.
- откройте веб-консоль RDS.
- откройте вкладку "Группы параметров".
- создать новую группу параметров. В диалоговом окне выберите семейство MySQL, совместимое с вашей версией базы данных MySQL, дайте ему имя и подтвердите. Выберите только что созданную группу параметров и выдайте "редактировать параметры".
- найдите параметр ' log_bin_trust_function_creators 'и установите для него значение'1'.
- Сохранить изменения.
- откройте вкладку "экземпляры". Разверните свой экземпляр MySQL и выполните "действие экземпляра" с именем "изменить".
- выберите только что созданную группу параметров и включите "применить немедленно".
- нажмите на кнопку "Продолжить" и подтвердите изменения.
- дождитесь завершения операции "изменение".
- снова откройте вкладку "экземпляры". Разверните свой экземпляр 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.
Comments