mysqldumpコンソールを使用したパスワードのエスケープ


55

bashスクリプトを使用してmysqldumpを実行していますが、特殊文字を含むパスワードで問題が発生しました。

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

パスワードをエスケープするにはどうすればよいですか?

回答:


84

答えを見つけました。次のようにパスワードを引用する必要があります。

mysql -u root -p'PASSWORD'

パスワードに次の文字のいずれかが含まれている場合、これを行う必要があります。 * ? [ < > & ; ! | $ ( )


パスワード内でアポストロフィをエスケープする方法を知っていますか?
スティーブメイン

3
@SteveMayne私はその前にちょうどバックスラッシュだと思う
-psynnott

3
括弧も引用符で囲む必要があります。
フェリックスガニヨングレニエ14年

1
Windowsでは、二重引用符を使用する必要があることがわかりました。単一引用符は機能しませんでした。(MySQL 5.6)
TheStoryCoder

1
パスワードを空白にも「」必要
Hafenkranich

12

あなたが引用符を使用する場合、確認してくださいにスペースがありません:
-pおよび'PASSWORD' または
--password='PASSWORD'

正しい:
mysql -u root -p'PASSWORD'
mysql -u root --password='PASSWORD'

動作しません:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

変数を定義してからコマンドに使用することもできます(間にスペースを入れないでください) MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD


2

シェルに依存します。Microsoft WindowsまたはLinuxを使用していますか?Linux / BASHを使用している場合は、$$が現在のプロセスIDとして解釈されている可能性があります。各ドル記号の前にバックスラッシュを入れてみましたか?例えば

mysqldump \
  -hlocalhost \
  -uUSERNAME \
  -pPA\$\$W0RD \
  DATABASE \
| gzip -c \
> /home/USERNAME/backups-mysql/BACKUP.gz

STDOUTに圧縮する場合は、gzipで「-c」オプションが必要になることに注意してください。


私が使用しているパスワードはPA $$ W0RDではありませんが、これを例として使用しました。私が使用している実際のパスワードにはアンパサンドがあり、これが問題の原因です。あなたが提案したようにバックスラッシュを使用しましたが、うまくいきませんでした。
サイノット

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.