41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

リストア時の「Access denied; you need (at least one of) the SUPER privilege(s) for this operation」エラー

環境構築時にハマったお話

先日、AデータベースサーバからBデータベースサーバにデータをmysqldump→mysqlコマンドでエクスポート&リストアしました。

ところが

Aから取得した "aスキーマ" の一部のオブジェクトがBに正しくリストアされてないことがわかり、再度やりなおしてみることに。

再実行してみると・・・

もう一度エラーログを出力しつつ、同じように実行してみたところこんなエラーが。

ERROR 1227 (42000) at line 3018: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

rootでやったのに、SUPER privilege(s)がないとはこれ如何に?

原因はコレ

/*!50013 DEFINER=`aaa`@`%` SQL SECURITY DEFINER */

これがダンプファイル内で指定されているとそのユーザ(上記で言う"aaa@%”ユーザ)以外でのそのオブジェクトのリストアが失敗する。

解決方法は2つ

  • 指定されたユーザでリストアする
  • 対象行(/*!50013~が書かれた部分)を削ってから適当なユーザでリストアする

MySQL、躓きポイントがたくさんあって毎日学ぶわ。