如何在通过shell脚本执行`mysqldump`时提供密码

inf*_*toz 1 mysql command-line scripts

我写了一个批处理文件,它建立到我能够这样做的 linux 服务器的连接,之后我试图将 mysqldump 带到某个目录,它具有所有 777 权限,但 linux 系统要求我“输入密码”只是空的,我需要手动按Enter,我只需要执行我的脚本,只需按一下Enter,执行就会自动发生。下面是一些细节。

批处理文件:

plink.exe -ssh user@host -m command.txt
Run Code Online (Sandbox Code Playgroud)

command.txt

mysqldump -uve -p -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz
Run Code Online (Sandbox Code Playgroud)

这是提示我输入密码的图像: 这是提示我输入密码的图像

请为我提供一些输入,以便我可以输入密码并自动执行我的命令。

vid*_*rlo 7

据我了解,您正在运行的命令要求输入密码。你的线路是:

mysqldump -uve -p -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz
Run Code Online (Sandbox Code Playgroud)

如果我们转到man mysql,我们会阅读以下内容:

连接到服务器时使用的密码。如果使用短选项形式 (-p),则选项和密码之间不能有空格。如果在命令行中省略 --password 或 -p 选项后面的密码值,mysql 会提示输入一个。

您没有指定任何内容 - 因为外壳威胁空间作为参数分隔符。为 mysql 用户设置密码,-p从 command.txt 文件中删除,或者...将您的命令修改为以下内容:

mysqldump -uve --password="" -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz
Run Code Online (Sandbox Code Playgroud)

这里我们明确指定了一个空白密码。

  • 此语法 `mysqldump -u'user-name' -p'the-password' ...` 也适用。 (2认同)