如何隐藏bash脚本中用于访问MySQL的密码/用户名?

时间:2010-01-27 02:36:49

标签: mysql security bash scripting

我正在编写一个我计划通过cron执行的bash脚本。在这个脚本中,我想对MySQL数据库执行命令,如下所示:

$ mysql -u username -ppassword -e 'show databases;'

为了清楚和不熟悉mysql的人,“ - u”开关接受用于访问数据库的用户名,“ - p”用于密码(故意省略空格)。

我正在寻找一种方法来保持用户名/密码在脚本中的使用方便,但是这种方式也可以保护这些信息免受窥探。我已经看到了需要以下内容的策略:

  1. 将密码保存在文件中:pword.txt
  2. chmod 700 pword.txt(删除除文件所有者之外的所有权限“
  3. 当需要登录时,将cat pword.txt导入脚本中的变量。
  4. 但是我觉得这也不是很安全(关于保持密码的问题让我感到不安)。

    那么我应该如何保护将在Linux上的自动脚本中使用的密码?

4 个答案:

答案 0 :(得分:5)

保护密码的唯一真正安全的方法是加密密码。但是你有保护加密密钥的问题。这个问题一直是乌龟。

当构建OpenSsh的优秀人员解决了这个问题时,他们提供了一个名为ssh-agent的工具,它将保留您的凭据并允许您使用它们连接到需要的服务器。但即使ssh-agent在文件系统中拥有一个命名套接字,任何可以访问该套接字的人都可以使用您的凭据。

我认为只有两种选择

  • 让某人输入密码。

  • 信任文件系统。

我只信任本地文件系统,而不是远程安装的文件系统。但我相信它。

安全是地狱。

答案 1 :(得分:5)

您可以对密码进行模糊处理的一种方法是将其放入options file。这通常位于UNIX / Linux系统上的 〜/ .my.cnf 中。这是一个显示用户和密码的简单示例:

[client]
user=aj
password=mysillypassword

答案 2 :(得分:0)

请参阅doc for some guidelines。您可以采取的额外步骤是限制普通用户使用ps命令,前提是他们有权访问服务器。

答案 3 :(得分:-2)

我同意Norman你应该让别人输入密码。如果您只提供-p标记而没有附带的密码,则会提示用户输入密码。