mysqldumpをスクリプトで実行してなぜか
mysqldump: Got error: 1045: "Access denied for user 'hogehoge'@'localhost' (using password: YES)" when trying to connect
と怒られ続けた話をします。
何をしたいか
mysqldump --defaults-file=/usr/local/etc/dbaccess.cnf --add-drop-database --add-drop-table --triggers --routines --default-character-set=utf8 -h localhost -- databases DBname > /backup/test1.sql
このコマンドでバックアップを取りたいのです。
でも上記の用にだめでした。
mysqldump -u hoge -pfugafuga --add-drop-database --add-drop-table --triggers --routines --default-character-set=utf8 -h localhost -- databases SNH_PUB_DB > /backup/test1.sql
このようにユーザー名とPASSをそのまま書くと問題ないので、パスワードを入れてるファイルの問題ぽいので見ましたがスペルミスも謎のスペースも改行もありません。。
原因
原因はパスワードコンフにあったのですが今回使用しているパスワードに記号が入っています。
hoge#ho$dd
こんな感じで。
その場合コマンドラインにわたすときにおかしくなるようで
[mysqldump] user=hoge password="hoge#ho$dd`"
こうしました。(ダブルコーテーションでくくる)
おわり