fix(database): 解决本地数据库备份认证问题
- 添加 localhost 到 127.0.0.1 的转换逻辑
- 避免容器环境下 mysqldump 使用 socket 连接导致的认证失败
- 确保统一使用 TCP 方式进行数据库备份操作
| | |
| | | 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; |
| | | |