我写了一个简单的 shell 脚本来转储一个特定的 mysql 数据库。问题是即使我提供了密码,它也会提示我输入密码。如果重要的话,mysql db 的版本是 5.0.27。这是我正在使用的特定行。
$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE
我尝试了几种变体,但无济于事。
我写了一个简单的 shell 脚本来转储一个特定的 mysql 数据库。问题是即使我提供了密码,它也会提示我输入密码。如果重要的话,mysql db 的版本是 5.0.27。这是我正在使用的特定行。
$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE
我尝试了几种变体,但无济于事。
更好的解决方案是将用户名和密码存储在配置文件中并指向该配置文件。通过将它放在命令行中,任何可以运行 ps 的人都可以找到您服务器的密码。
传递
--defaults-extra-file=/pathto/database.cnf
给 mysql 转储。配置文件需要看起来像这样。设置文件系统权限,以便只有备份进程才能打开配置文件。
更新 (2016-06-29) 如果您正在运行 mysql 5.6.6 或更高版本,您应该查看mysql_config_editor工具,该工具允许您将凭据存储在加密文件中。感谢Giovanni向我提及这一点。
我敢打赌,
$MyPass
您的脚本中没有正确设置。如果任何 mysql 命令行工具收到-p
没有紧跟密码的 a,它们假定它们应该提示输入密码。另一方面,如果您提供了错误的密码(或错误的用户名或类似名称),它将无法连接。因此,我建议在该行的开头放置一个
echo
命令并重新运行您的脚本,如下所示:不要忘记删除输出重定向。