mysqldump在shell脚本中提示input密码

我写了一个简单的shell脚本来转储特定的mysql数据库。 问题是,即使我提供了密码,也会提示我input密码。 如果这个问题的话,mysql数据库版本是5.0.27。 这是我正在使用的具体行。

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

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

我敢打赌, $MyPass没有在你的脚本中正确设置。 如果任何一个mysql命令行工具收到一个-p ,那么紧接着就是一个密码,他们认为它们应该提示input密码。 另一方面,如果您提供了错误的密码(或错误的用户名或类似名称),则连接失败。

所以,我build议在该行的开始处放置一个echo命令并重新运行脚本,如下所示:

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

不要忘记删除输出redirect。

更好的解决scheme是将用户名和密码存储在configuration文件中并指向该configuration文件。 通过在命令行中运行ps的任何人都可以find服务器的密码。

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

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

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

更新(2016-06-29)如果您正在运行MySQL 5.6.6或更高版本,您应该查看mysql_config_editor工具,该工具允许您将凭据存储在encryption文件中。 感谢乔瓦尼提到这个给我。