mysqldump 在 shellscript 中提示输入密码

adu*_*ljr 9 mysql shell

我写了一个简单的 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向我提到这一点。

  • 我知道这是一个旧答案,但在搜索如何安全地传递密码时仍然会出现,并且它也与其他帖子链接。使用 5.5 版本时,我不得不在配置文件中将强密码封装在单个勾号中,例如如果我的密码是 `aoeu1234`,我的配置文件就有 `password = 'aoeu1234'`;否则你会得到一个未经授权的错误。 (3认同)

Ins*_*yte 4

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

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

echo $MYSQLDUMP -u backup -p$MyPass $DB
Run Code Online (Sandbox Code Playgroud)

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


归档时间:

查看次数:

15154 次

最近记录:

9 年,2 月 前