CPI共有サーバーで mysqldump 出来ない時に確認すること

CPIの共有レンタルサーバー「シェアードプラン ACE01」で ssh接続して mysqldump でデータベースのバックアップを取得しようとしたところエラーで取得出来ませんでした。

実行したコマンドとエラーメッセージ

コマンド

mysqldump -u'dbuser' -p'dbpass' -h'127.0.0.1' dbname > dbname.sql

エラーメッセージ

mysqldump: Got error: 1044: Access denied for user 'dbuser'@'localhost' to database 'dbname' when selecting the database

エラー内容の調査

mysqldump: Got error: 1044: Access denied” で検索するとテーブルロック権限(LOCK TABLES)がないため起きているエラーで回避方法として オプションの “--single-transaction” をつける方法がいくつか出てきました。

再度mysqldump実行

mysqldump --single-transaction -u'dbuser' -p'dbpass' -h'127.0.0.1' dbname > dbname.sql

結果

--single-transaction” をつけて試してみましたが、結果は同じエラーでした。

mysqldump: Got error: 1044: Access denied for user 'dbuser'@'localhost' to database 'dbname' when selecting the database

phpMyAdminでテスト

phpMyAdminが利用できるようになっていましたので、エクスポート出来るか試してみましたが、問題なくダンプファイルが取得出来ました。

phpMyAdminの画面からサーバー情報を見ていたところ “3307” のポート番号がついていました。ひょっとして。。。

ポート番号をつけて再実行

コマンド

mysqldump --single-transaction -u'dbuser' -p'dbpass' -h'127.0.0.1'  -P 3307 dbname > dbname.sql

結果

コマンド実行後、エラーは返らず正常にダンプファイルの取得ができました。

OKパターンとNGパターン

最初のエラーからテーブルロック権限が影響しているかと思いましたが、結果的にはポート番号が未指定だったことが原因でしたので オプション “--single-transaction” の有無はどちらでも大丈夫なようでした。

OK

mysqldump --single-transaction -u'dbuser' -p'dbpass' -h'127.0.0.1' -P 3307 dbname > dbname.sql

mysqldump --single-transaction -u'dbuser' -p'dbpass' -h'127.0.0.1' -P 3307 -B dbname > dbname.sql

mysqldump -u'dbuser' -p'dbpass' -h'127.0.0.1' -P 3307 -B dbname > dbname.sql

mysqldump -u'dbuser' -p'dbpass' -h'127.0.0.1' -P 3307 dbname > dbname.sql

NG

mysqldump --single-transaction -u'dbuser' -p'dbpass' -h'127.0.0.1' dbname > dbname.sql

mysqldump --single-transaction -u'dbuser' -p'dbpass' -h'127.0.0.1' -B dbname > dbname.sql

mysqldump -u'dbuser' -p'dbpass' -h'127.0.0.1' -B dbname > dbname.sql

mysqldump -u'dbuser' -p'dbpass' -h'127.0.0.1' dbname > dbname.sql

動作環境情報

CPI シェアードプラン ACE01

コメント

タイトルとURLをコピーしました