在bash脚本中提示MySQLDump密码?

时间:2013-04-22 18:55:59

标签: bash mysqldump

我正在尝试编写一个运行mysqldump命令的bash脚本,该命令使用-p标志。此标志提示用户输入密码,该密码在shell中直接运行时按预期工作,但在脚本中运行时不会显示。

#!/usr/bin/env 

ssh user@domain.com 'mysqldump -u mysqluser -p --databases foo | bzip2' > ~/temp/foo-dump.sql.bz2

现在我可以在脚本中嵌入密码或将其作为参数传递,但我真的希望脚本提示用户输入密码,因此密码不会出现在我的脚本仓库或我的bash历史记录中。

任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

read -p "mysql password: " PASS && ssh user@domain.com 'mysqldump -u mysqluser -p'$PASS' --databases foo | bzip2' > foo-dump.sql.bz2 ; PASS=""

在这种情况下,您将首先输入mysql密码,然后提示输入ssh密码。请注意,mysql密码不会被隐藏,即有人可以通过你的肩膀阅读它。如果您想避免这种情况,请使用标记-s

read -s -p "mysql password: " PASS && ...

另请注意," p"之间不能有任何空格。 (在-p中为密码)和密码变量的引号。

另外,你的shebang没有指定使用哪个解释器,这可能是个问题。我建议您使用#!/bin/bash#!/usr/bin/env bash