使用 mysqldump 控制台转义密码

使用 mysqldump 控制台转义密码

我正在通过 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" .....

相关内容