用 mysqldump 与 openssl 管道加密备份最稳妥需指定 -pbkdf2、-iter、-md sha256 等参数确保兼容性PHP 调用时应使用绝对路径、TCP 连接、配置文件传密解密须参数严格一致大库需分表导出避免超时。用 mysqldump openssl 一步完成加密备份直接在 shell 层把导出和加密串起来最稳避免中间生成明文 SQL 文件。PHP 本身不擅长处理大文件流式加密硬用 openssl_encrypt() 容易内存溢出或乱码。mysqldump 输出直接通过管道交给 openssl enc -aes-256-cbc不落地明文密钥必须用 -pbkdf2 衍生别用裸密码加盐-salt是默认行为不用显式写务必指定 -md sha256旧版 OpenSSL 默认用 md5新版本已弃用不写可能报错 Unknown cipher示例命令mysqldump -u root -p database_name | openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -salt -md sha256 -out backup.sql.encPHP 调用系统命令时的权限与路径陷阱PHP 执行 exec() 或 shell_exec() 备份常卡在找不到 mysqldump 或权限拒绝——不是代码问题是环境配置偏差。mysqldump 路径未必在 $PATH 里用 which mysqldump 查准路径硬编码进命令如 /usr/bin/mysqldumpWeb 服务器用户如 www-data可能没权限读取 MySQL socket 或连本地数据库改用 -h 127.0.0.1 强制走 TCP避开 socket 权限问题密码不能明写在命令行-p123456会被 ps aux 看见改用配置文件方式~/.my.cnf 设好 [client] 段再加 --defaults-extra-file/full/path/to/.my.cnf输出文件路径要确保 Web 用户有写权限且目录存在别用相对路径一律用绝对路径解密时必须严格匹配加密参数加密用了什么参数解密就得一模一样差一个 -iter 或 -md 就只会报 bad decrypt不会提示哪错了。 Felvin AI无代码市场只需一个提示快速构建应用程序