我写了一个简单的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文件中。 感谢乔瓦尼提到这个给我。