我想使用 MySQLDump 使用 cron 作业每周备份数据库。 我不想在 shell 脚本中对凭据进行硬编码。 MySQL 数据库版本是 5.1,所以 mysql-config-editor 不可用。 我知道选项文件,我可以使用 600 的 linux 文件权限来保护它。 有没有办法加密凭据并使其不可读?
最佳答案
Is there a way to encrypt the credentials and make them unreadable?
问问自己,除了正常的文件权限之外,您希望保护文件免受谁的侵害,为什么加密会有帮助。
如果您要加密包含密码的文件,您必须确保合法的备份进程可以访问加密 key ,以便它可以从文件中读取密码。然后,您必须确保所有其他进程都无法访问这些 key 。
由于这使事情变得更加复杂,因此在没有在基本文件系统安全模型之上增加太多安全性的情况下,这增加了泄漏的风险。因此,我建议坚持 .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
关于mysql - 保护 MySQLDump 的备份凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17829659/