mysqldumpでエラー (LOCK TABLES)

mysqldumpでエラー (LOCK TABLES)

by 雄一 川口 -
Number of replies: 2

若しかしたらmoodleでは常識なのかも知れませんが...

本家サイトにあるインストールガイドに従いMySQLのDBとDBユーザを作るとき、DBユーザの権限に「LOCK TABLES」は指定しません。

そのままでmoodle自体はインストールできるし、サイトは動きます。

しかし、本家ガイドにある管理ガイドに従いDBをバックアップすると、下記のエラーになります。

mysqldump: Got error: 1044: Access denied for user 'XXXXXX' to database 'YYYYYY' when using LOCK TABLES

多分、下記のどちらかで解決することになると思います。

  1. DBユーザを作成するときに権限「LOCK TABLES」を追加する。
  2. mysqldumpのオプションに「--skip-lock-tables」をつける。

ちなみに、自分は--skip-lock-tablesを付けました。お茶を濁しているだけのような気がしてなりません...

しかしながら、かなり前から、 本家ガイドはこのことについて触れていないので、何か自分で見落としていることがあるかなと気になっています。

どなたかご助言いただけると幸です。

自分の環境を書きます。

  • OS: Debian wheezy
  • Apache: 2.2.22 (Debian)
  • MySQL: Ver 14.14 Distrib 5.5.40
  • PHP: PHP 5.4.4-14+deb7u14
  • moodle: 2.7.3

--

川口 雄一 / 天使大学

Average of ratings: -
In reply to 雄一 川口

Re: mysqldumpでエラー (LOCK TABLES)

by Mitsuhiro Yoshida -
Picture of Developers Picture of Particularly helpful Moodlers Picture of Translators

川口先生

--single-transaction オプションをお使いになってはいかがでしょうか。

よろしければ、ご参考までに下記ドキュメントをご覧ください。

[MySQL 5.1 Reference Manual :: 14.6.10 InnoDB Backup and Recovery]
http://dev.mysql.com/doc/refman/5.1/en/innodb-backup.html

[MySQL 5.1 Reference Manual :: 7.3.1 Establishing a Backup Policy]
http://dev.mysql.com/doc/refman/5.1/en/backup-policy.html

[mysql - skip-lock-tables and mysqldump - Stack Overflow]
http://stackoverflow.com/questions/7415698/skip-lock-tables-and-mysqldump

Average of ratings: お役立ち度: ★★★★★★★ (1)
In reply to Mitsuhiro Yoshida

Re: mysqldumpでエラー (LOCK TABLES)

by 雄一 川口 -

Yoshida 様、

いつもお世話になります。

本家サイトにあるインストールおよびバックアップの解説どおりにやってエラーになるのがちょっと納得ゆかなかったです。 自分の作業は解説どおりではなかったのかなと気になりました。

お示しいただいたMySQLのドキュメントには--single-transactionを使うよう記載がありますね。 自分では--lock-tables=falseも試してみてうまくいってました。 --single-transactionもうまく動きました。

ご助言あり難うございます。

ただ、自分はmaharaのDBもMySQLで運用していて、こっちはLOCK TABLES関連のオプションは付けなくても、mysqldumpでうまくバックアップできています。

Average of ratings: お役立ち度: ★★★★★★★ (2)