問題
mysqldumpでエクスポートしたデータをインポートすると次のエラーメッセージが表示されました。
Access denied; you need (at least one of) the SUPER or SET_USER_ID privilege(s) for this operation
原因
エラーメッセージには「SUPER」または「SET_USER_ID」権限がこの操作に必要であると述べられています。
対策
エクスポートされたSQLファイルからDEFINER=
という文字を含む行を探して削除します。
巨大なファイルをテキストエディタで開くと編集に時間がかかります。
sedを使う方法を紹介します。以下のコマンドを実行して、backup.dmpファイルからDEFINER=という文字を含む行を削除します。
Linuxの場合
Linux系のシステムでは、以下のコマンドを使用します。このコマンドはファイルを直接変更します。
sed -i '/^\/\*![0-9]* DEFINER=/d' backup.dmp
macOSの場合
macOSやBSD系のシステムでは、-iオプションの使用法が異なります。
以下のコマンドを使用します。
このコマンドは、ファイルを直接変更し、バックアップファイルを作成しません。
sed -i '' '/^\/\*![0-9]* DEFINER=/d' backup.dmp