mysqldumpでエクスポートしたデータをインポート時のAccess deniedエラーの解決方法

問題

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください