mysql备份防泄露需四层防线:权限控制(目录700、属主mysql)、加密存储(openssl/gpg加密+密钥离线保管)、传输安全(rsync over ssh/TLS+SSE)、异地隔离(跨网络副本+自动清理+定期可读性验证)。

mysql备份文件一旦泄露,等同于把整个数据库白送出去。防止备份泄露不是“加个密码”就完事,关键在权限控制、加密存储、传输安全和异地隔离四层防线。
备份目录与文件权限必须严格限制
备份文件不能放在任何人都能读写的路径下。系统层面要确保:
- 备份目录(如/backup/mysql)归属mysql用户,权限设为700(仅属主可读写执行)
- 备份脚本和生成的.sql或.xb文件,禁止其他用户(包括root以外的运维账号)有访问权限
- 删除备份过程中的临时文件,避免残留明文数据
备份文件必须加密后再落盘
即使磁盘被物理窃取,加密也能守住最后一道门:
- 用gpg或openssl对备份文件加密,密钥单独离线保管,不存服务器
- 示例:openssl enc -aes-256-cbc -salt -in full_20251216.sql -out full_20251216.sql.enc
- 禁用简单压缩密码(如zip -P),这类密码极易被暴力破解
传输过程全程加密,杜绝明文外发
备份同步到远程或云存储时,绝不能走明文协议:
- 用rsync over ssh或scp -C替代ftp、http、nfs等无加密方式
- 若上传至对象存储(如S3、MinIO),启用服务端加密(SSE)并强制TLS 1.2+传输
- 跨公网传输前,先校验文件完整性(如sha256sum),再加密上传
异地保存+自动清理,降低单点失效风险
本地备份和服务器在同一机房,等于没备: