我正在通过 bash 脚本运行 mysqldump,并遇到了包含特殊字符的密码的问题。
mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE |
gzip > /home/USERNAME/backups-mysql/BACKUP.gz
我该如何逃脱密码?
答案1
我找到了答案。您必须引用密码,如下所示:
mysql -u root -p'PASSWORD'
如果密码包含以下任何字符,则必须执行此操作:* ? [ < > & ; ! | $ ( )
答案2
使用引号时,请确保和
之间 或和 之间没有空格:-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
答案3
取决于你的 shell。你使用的是 Microsoft Windows 还是 Linux?如果你使用的是 Linux/BASH,那么 $$ 很可能被解释为你当前的进程 ID。你试过在每个美元符号前面加一个反斜杠吗?例如
mysqldump \
-hlocalhost \
-uUSERNAME \
-pPA\$\$W0RD \
DATABASE \
| gzip -c \
> /home/USERNAME/backups-mysql/BACKUP.gz
请注意,如果您想压缩到 STDOUT,gzip 可能需要“-c”选项。
答案4
如果你在 Windows 上使用 mysqldump.exe,则应使用双引号,而不是单引号,例如
mysqldump.exe --user=roo --password="WE&&^6HJg&^7" .....