我写了一个简单的 shell 脚本来转储特定的 mysql 数据库。问题是它提示我输入密码,即使我提供了。如果重要的话,mysql 数据库是 5.0.27 版。这是我正在使用的特定线路。
$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE
Run Code Online (Sandbox Code Playgroud)
我尝试了几种变体,但都无济于事。
Zor*_*che 18
更好的解决方案是将用户名和密码存储在配置文件中并指向该配置文件。通过在命令行中使用它,任何可以运行 ps 的人都可以找到您服务器的密码。
传递--defaults-extra-file=/pathto/database.cnf
到 mysql 转储。
配置文件需要看起来像这样。设置文件系统权限,以便只有备份进程可以打开配置文件。
[client]
host = servername.domain.tld
user = backup
password = strongpassword
Run Code Online (Sandbox Code Playgroud)
更新 (2016-06-29) 如果您正在运行 mysql 5.6.6 或更高版本,您应该查看mysql_config_editor工具,该工具允许您将凭据存储在加密文件中。感谢Giovanni向我提到这一点。
我敢打赌$MyPass
你的脚本中没有正确设置。如果任何 mysql 命令行工具收到的-p
密码后面没有紧随其后,它们就会认为应该提示输入密码。另一方面,如果您提供了不正确的密码(或错误的用户名或类似内容),它将无法连接。
因此,我建议echo
在该行的开头放置一个命令并重新运行脚本,如下所示:
echo $MYSQLDUMP -u backup -p$MyPass $DB
Run Code Online (Sandbox Code Playgroud)
不要忘记删除输出重定向。
归档时间: |
|
查看次数: |
15154 次 |
最近记录: |