2&>1

AWSとかGCPとかGolangとかとか

mysqldumpで詰まった(1年ぶり)

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`"

こうしました。(ダブルコーテーションでくくる)

おわり