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
コメント