使用 mysqldump 控制台转义密码

psy*_*ott 62 passwords mysqldump escape-characters

我正在通过 bash 脚本运行 mysqldump,但遇到密码包含特殊字符的问题。

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz
Run Code Online (Sandbox Code Playgroud)

我如何转义密码?

psy*_*ott 97

我找到了答案。您必须引用密码,如下所示:

mysql -u root -p'PASSWORD'
Run Code Online (Sandbox Code Playgroud)

如果密码包含以下任何字符,则必须执行此操作: * ? [ < > & ; ! | $ ( )

  • @SteveMayne 我认为它之前只是一个反斜杠 (3认同)
  • 括号也需要用引号引起来。 (3认同)
  • 在 Windows 上我发现我必须使用双引号。单引号不起作用。(MySQL 5.6) (2认同)

小智 13

使用引号时,请确保没有空格:
-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