You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

App Service内置备份连接Azure PostgreSQL数据库认证失败问题咨询

排查App Service备份PostgreSQL失败的密码认证问题

这问题我之前帮人排查过类似的,结合你的描述,密码里的特殊字符大概率是元凶,不过还有几个其他可能的点,咱们一个个拆解:

核心嫌疑:特殊字符未做URL编码

你提到密码里有%、#、^这类特殊字符,这恰恰是关键——终端里用psql直接连接时,Shell会自动帮你转义这些特殊字符,但App Service的备份服务在解析连接字符串时,是严格按照URL编码规则来处理的,未编码的特殊字符会被解析成其他语义,导致密码校验失败。

举几个必须转义的字符对应编码:

  • % → %25
  • # → %23
  • ^ → %5E
  • ! → %21
  • * → %2A
  • $ → %24

比如你的密码是P@ssw0rd!$,连接字符串里的密码部分要改成P%40ssw0rd%21%24,而不是直接写原密码。

其他可能的排查点

1. 防火墙规则是否覆盖备份服务IP

虽然你的应用能正常连接数据库,但App Service的备份服务可能使用不同的出站IP池。你可以:

  • 进入App Service的网络面板,找到“出站IP地址”列表
  • 把这些IP全部添加到Azure PostgreSQL服务器的防火墙允许规则里

2. 连接字符串格式是否正确

Azure PostgreSQL的连接字符串需要严格遵循格式,特别是用户名必须带服务器后缀(用户名@服务器名),且建议显式指定SSL模式:

Host=your-server.postgres.database.azure.com;Database=your-db;Username=user@your-server;Password=编码后的密码;Ssl Mode=Require

如果你的连接字符串是用ADO.NET格式或者其他非标准格式,备份服务可能无法正确解析。

3. 应用设置的连接字符串类型是否匹配

在App Service的应用设置里,连接字符串的“类型”要选择PostgreSQL,而不是Custom,否则备份服务可能无法识别并正确读取参数。

解决步骤建议

  1. 先对密码里的特殊字符做URL编码,更新应用设置中的defaultConnection
  2. 确认连接字符串类型为PostgreSQL,且格式包含Ssl Mode=Require
  3. 检查PostgreSQL防火墙规则,添加App Service的所有出站IP
  4. 重新触发备份测试

内容的提问来源于stack exchange,提问作者Konrad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:43:13