使用Key Vault密码创建的Azure PostgreSQL服务器psql连接失败
问题根因
使用az keyvault secret show命令查询密钥时,默认返回JSON格式的结果,你仅指定了--query "value"没有调整输出格式,因此拿到的secret变量值包含首尾多余的双引号,实际设置的PostgreSQL管理员密码是"changeMe+1"(含双引号),和你本地连接时输入的changeMe+1不匹配,因此触发密码验证失败。
你可以从echo $secret的输出"changeMe+1"验证这一点:输出内容被双引号包裹,说明变量本身就携带了这两个引号字符。
修复方案
- 调整密钥查询命令,添加
-o tsv参数输出纯文本值,自动去除JSON格式的引号:
secret=$(az keyvault secret show --name "AdminPassWord" --vault-name unfortunate-kv --query "value" -o tsv)
- 也可以在获取变量后手动裁剪掉首尾的双引号再传入创建命令,避免异常。
- 可通过
echo ${#secret}快速校验变量是否正常:正确的密码changeMe+1长度为9,携带引号的版本长度为11,能快速定位问题。
内容的提问来源于stack exchange,提问作者Jaana
相关产品推荐
相关产品推荐

