mysql - 保护 MySQLDump 的备份凭据

标签 mysql database-backups

我想使用 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/

相关文章:

php - 将 UK DATE 转换为 MySQL 日期?

java - 我如何在java中找到用户位置

MYSQL 在查询中包含 NULL

mysql - Codeigniter 数据库备份 - 插入多行而不重复 “INSERT INTO”

mysql - 使用 mysql 数据库和 codeigniter 进行备份

mysql - 删除 Select 语句中的前 3 个字符

MySQL Math - 计算另一列的值

mysql - 备份MySQL数据库的有效方法

mysql - 如何进行MySQL数据库自动备份?

mysql - 冷备份期间网站数据库写入的最佳实践?