MySQL加密备份核心是“先备份、再加密”或“备份时直接加密”,推荐mysqldump+gpg对称或非对称加密,次选openssl;须规避明文密码、安全保管密钥、定期验证还原,并做好密钥生命周期管理。
对 MySQL 数据做加密备份,核心是“先备份、再加密”,或“备份时直接加密”,确保数据在传输和存储过程中不被未授权访问。关键不是单纯压缩,而是用可信工具加密码或密钥保护内容。
使用 mysqldump + gpg 加密备份(推荐)
这是最常用且安全的方式:先用 mysqldump 导出 SQL,再用 GPG(GNU Privacy Guard)非对称或对称加密。
- 对称加密(简单快捷,适合自动化):
mysqldump -u user -p database_name | gpg --cipher-algo AES256 --symmetric --armor > backup_$(date +%F).sql.gpg
执行后会提示输入密码,该密码必须安全保管——丢失即无法恢复。 - 若已配置 GPG 密钥对,可用公钥加密,更利于团队协作:
mysqldump -u user -p database_name | gpg --encrypt --recipient [email protected] > backup.sql.gpg - 还原时需对应解密:
gpg --decrypt backup.sql.gpg | mysql -u user -p database_name
使用 openssl 加密(轻量替代方案)
若服务器未安装 GPG,openssl 是通用选择,支持 AES-256-CBC 等强算法。
- 备份并加密:
mysqldump -u user -p database_name | openssl enc -aes-256-cbc -pbkdf2 -salt -out backup_$(date +%F).sql.enc
会要求输入密码(passphrase),同样不可丢失。 - 解密还原:
openssl enc -d -aes-256-cbc -pbkdf2 -in backup.sql.enc | mysql -u user -p database_name - 注意:
-pbkdf2启用密钥派生,比老版本-md md5更安全;避免用-k明文传密钥,应交互输入。
备份文件本身加密(适用于已有备份)
如果已有未加密的 SQL 或压缩包(如 .sql.gz),可单独加密归档文件: