1

我想使用 MySQLDump 使用 cron 作业每周备份数据库。我不想在 shell 脚本中硬编码凭据。MySQL db 版本是 5.1,所以 mysql-config-editor 不可用。我知道选项文件,我可以使用 600 的 linux 文件权限来保护它。有没有办法加密凭据并使它们不可读?

4

2 回答 2

1

有没有办法加密凭据并使它们不可读?

问问自己你想保护文件免受谁的侵害,为什么除了正常的文件权限之外,加密还有帮助。

如果要加密包含密码的文件,则必须确保合法的备份进程可以访问加密密钥,以便它可以从文件中读取密码。然后,您必须确保所有其他进程都无权访问这些密钥。

由于这使事情进一步复杂化,这增加了泄漏的风险,而没有在基本文件系统安全模型之上增加太多安全性。因此,我建议坚持 .my.cnf 文件的正确所有权和文件权限。

进一步阅读:http ://benlog.com/articles/2012/04/30/encryption-is-not-gravy/

我个人每天通过 cron 以 root 身份运行 mysqldump。为了破解这一点,攻击者需要先破坏基本文件系统权限,然后才能访问/root/.my.cnf(模式为 600,由 root 拥有)。如果攻击者能够做到这一点,他可能也可以直接访问数据库文件,因此加密的密码文件在这里不会有帮助。

只要 ~/.my.cnf 上的模式为 600 并且所有权设置为该系统用户,您还可以设置一个专门的系统用户来运行 mysqldump。

附言。这是我每天在我的机器上运行的 mysql 备份脚本: https ://gist.github.com/timkuijsten/6067107

于 2013-07-24T21:18:52.500 回答
0

MySQL 5.6 的最新版本解决了这个问题。您现在可以使用 mysql_config_editor 加密命令行登录的密码

于 2014-08-25T01:03:40.133 回答