Read it later.

Web製作に関するサーバ構成やコーディングネタの備忘録として使ってます。

*

[MySQL]ストアドプロシージャをmysqldumpでダンプできない – user has insufficent privileges to SHOW CREATE PROCEDURE

   

データベースに対して、ALL PRIVILEGES権限を割り当てているユーザでmysqldumpを実行しているのに、失敗する

# mysqldump --comments --routines -u ft -p hogehoge > dump_hogehoge.sql

と実行すると下記のような感じでエラーが出てダンプ出力に失敗した。
rootユーザでダンプできたらいいんだけど、そうもできない環境だと泣けてくる。

mysqldump: user has insufficent privileges to SHOW CREATE PROCEDURE `ストアドプロシージャ`!

GLOBAL権限で下記の2つを割り当てて試したけど、それでも失敗する

・CREATE ROUTINE
・ALTER ROUTINE

mysql.procテーブルにアクセスさえできればなんとかなる

調べてみると、やっぱりマニュアルにヒントがあった。

サーバはストアドルーチンを生成、変更もしくは撤去するステートメントに対して、mysql.procテーブルを操作します。このテーブルの手動操作のサポートは、サーバに通知されません。

MySQL 5.1 リファレンスマニュアル :: 17 ストアドプロシージャとファンクション :: 17.1 ストアドルーチンとグラントテーブル

たしかに、対象のデータベースにALL PRIVILEGES権限を割り当てても、異なるデータベース(mysql.proc)は読めないよね(-_-;

ざっくりした権限付けを行うのであれば、GLOBAL権限であるSELECT権限を割り当てれれば解決。

GRANT SELECT ON *.* TO user;

ダンプするだけでいいのであれば、

GRANT SELECT ON `mysql`.`proc` TO user;

これでよし。

 - MySQL

  関連記事

mysql
mysqlコマンドをコメント付きでクエリを実行する。

phpMyAdminでストアドを登録するとスクリプト内部にあるコメントも、ソース …

mysql
[MySQL]LOAD DATA INFILEで正常にCSVデータを読み込めない

※winscpを使って開発している人だけ、ご覧下さい。 LOAD DATA IN …

mysql
MySQLのrootパスワードが分からなくなったら

rootのパスワードが分からなくなったとき、どうすることもできないと観念したら、 …

mysql
Windows7でMySQL Connectorのインストールに失敗する – Error installing ODBC driver MySQL ODBC 5.5 Driver

Error installing ODBC driver MySQL ODBC …

mysql
MySQL用シーケンス制御ファンクション集(PostgreSQL風にファンクションを揃えてみた)

MySQLには、PostgreSQLのようなシーケンスが機能的にないので、作って …

mysql
[MySQL]innodbチューニング

いま携わっているプロジェクトでMySQLを使用しているのだけど、主要テーブル全て …

mysql
[MySQL]SELECT文で、FROM句を使用しないで、WHERE句を使用する

『SELECT文で、FROM句を使用しないで、WHERE句を使用する』 といった …

mysql
[MySQL]よく使うコマンド一覧

自分用のメモです。

mysql
mysqlで一般クエリログをする

mysqlで一般クエリログをするためには、 my.cnfをいじるといいのだけど、 …

mysql
[MySQL]プロセスの確認と、プロセスの強制終了

ストプロ内でのどのSQLが実行されているかもプロセスを見れば分かる MySQL内 …