mysqldump 在 shellscript 中提示输入密码

mysqldump 在 shellscript 中提示输入密码

我编写了一个简单的 shell 脚本来转储特定的 mysql 数据库。问题是,即使我提供了密码,它也会提示我输入密码。如果这很重要,mysql db 是版本 5.0.27。这是我正在使用的特定行。

$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE

我尝试了几种变化,但都无济于事。

答案1

我敢打赌,$MyPass您的脚本中没有正确设置。如果任何 mysql 命令行工具收到一个后面-p没有紧跟密码的命令,它们会认为应该提示输入密码。另一方面,如果您提供了错误的密码(或错误的用户名或类似信息),它将无法连接。

因此,我建议echo在该行的开头放置一个命令并重新运行脚本,如下所示:

echo $MYSQLDUMP -u backup -p$MyPass $DB

不要忘记删除输出重定向。

答案2

更好的解决方案是将用户名和密码存储在配置文件中并指向该文件。通过将其放在命令行中,任何可以运行 ps 的人都可以找到您服务器的密码。

传递--defaults-extra-file=/pathto/database.cnf给 mysql dump。

配置文件需要像这样。设置文件系统权限,以便只有备份进程才能打开配置文件。

[client]
host     = servername.domain.tld
user     = backup
password = strongpassword

更新(2016-06-29)如果你正在运行 mysql 5.6.6 或更高版本,你应该看看mysql_config_editor允许您的工具存储凭证在加密文件中。感谢乔瓦尼向我提及此事。

相关内容