15 小时以前 aa0cbbb7f33e8edebfa2ea152099fed10c6fad6f
fix(database): 解决本地数据库备份认证问题

- 添加 localhost 到 127.0.0.1 的转换逻辑
- 避免容器环境下 mysqldump 使用 socket 连接导致的认证失败
- 确保统一使用 TCP 方式进行数据库备份操作
已修改1个文件
5 ■■■■■ 文件已修改
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/database/DatabaseBackupServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/database/DatabaseBackupServiceImpl.java
@@ -97,6 +97,11 @@
            log.warn("无法从配置或 JDBC URL 解析完整的数据库信息: host={}, port={}, db={}", dbHost, dbPort, dbName);
            throw new ServiceException(500, "无法解析数据库备份连接信息,请在 yudao.database-backup 中配置 host/port/database");
        }
        // localhost 统一走 TCP 127.0.0.1:mysqldump 对 localhost 可能走 socket/loopback,
        // 而容器内 root@localhost 认证要求与 TCP root@'%' 不同,强制 TCP 避免认证失败
        if ("localhost".equalsIgnoreCase(dbHost)) {
            dbHost = "127.0.0.1";
        }
        String username = StrUtil.isEmpty(backupUsername) ? dbUsername : backupUsername;
        String password = StrUtil.isEmpty(backupPassword) ? dbPassword : backupPassword;