GCP MySQLインスタンス内でmysqlデータベースを復元できません

GCP MySQLインスタンス内でmysqlデータベースを復元できません

GCPストレージ内のSQLファイルからMySQLデータベースを復元しようとしました。手順としては、データベースのバックアップファイルをGCPストレージにアップロードし、このSQLファイルをGCP MySQLインスタンス内の指定されたデータベースにインポートしましたが、しばらく時間がかかり、例外が発生しました。

 Import error: exit status 1 ERROR 1227 (42000) at line 10871: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

その後、ルートまたは他のユーザーにスーパー権限を付与しようとしましたが、とにかく機能しませんでした。スーパー権限を付与することはできませんでした。この問題を解決する方法がわかりません。助けていただければ幸いです。

更新(2020年1月17日):解決した問題

例外が発生した行を見つけようとしました

$ sed -n -e 10870p -e 10871p -e 10872p -e 10873p example.sql

そして私は見つけた

/*!50013 DEFINER= root@ localhostSQL セキュリティ DEFINER */

次に、このコマンドを使用して問題のあるステートメントを削除しました

cat example.sql | sed -e 's/DEFINER= root@ localhost//g' > example-CLEANED.sql

そしてそれは完了した

答え1

には権限CURRENT_USERが必要ですSUPERが、現在の にはDEFINER権限がありません。 で再度ダンプしますmysqldump --skip-definer(これが最も手間のかからない方法です)。これが選択肢にない場合は、ダンプを編集して を削除するかDEFINER、その出現箇所すべてを に置き換えますCURRENT_USERSETダンプ内の特定のステートメントも、最終的に問題の原因となる可能性があります。

関連情報