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

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

批处理文件:

plink.exe -ssh user@host -m command.txt 

command.txt

 mysqldump -uve -p -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz 

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

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

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

 mysqldump -uve -p -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz 

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

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

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

 mysqldump -uve --password="" -R -E --single-transaction --databases mydb|gzip > /home/user/mydb_bkup.gz 

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