创建数据库对象时出错:验证连接时出错:拨号 tcp 127.0.0.1:5432:连接:连接被拒绝

创建数据库对象时出错:验证连接时出错:拨号 tcp 127.0.0.1:5432:连接:连接被拒绝

希望使用 postgresql 在保险库中配置数据库秘密引擎。

使用 docker-compose.yml 构建 vault 并创建 postgres 服务。

两个服务都已启动并运行,我能够使用 Mac 上的本地 psql 安装连接 postgres DB。postgres 和 vault 容器都已启动。

使用正确的插件和连接信息配置 Vault 会因此错误而失败。

bash-4.4# vault write dbs/config/postgres plugin_name=postgresql-database-plugin allowed_roles="readonly" connection_url="postgresql://vc:[email protected]:5432/postgres?sslmode=disable"

错误消息如下:

将数据写入 dbs/config/postgres 时出错:发出 API 请求时出错。

网址:PUThttp://127.0.0.1:8200/v1/dbs/config/postgres 代码:400。错误:

  • 创建数据库对象时出错:验证连接时出错:拨号 tcp 127.0.0.1:5432:连接:连接被拒绝

答案1

当 vault 和 postgres 不在同一网络运行时,就会出现此问题。

就我而言,我在 docker swarm 中运行 Vault,并尝试连接到在 VM 上运行的 postgres。

如果您在容器中运行此程序,请验证是否为 postgres 添加了正确的容器主机名。

就我而言,我必须将命令中的 localhost 更改为我的虚拟机的 IP 地址10.11.12.13

vault write database/config/<VAULT_CONFIG_NAME> \
  plugin_name=postgresql-database-plugin \
  allowed_roles="*" \
  connection_url="postgresql://{{username}}:{{password}}@10.11.12.13:5432/postgres" \
  username=<POSTGRES_USER> \
  password=<POSTGRES_PASSWORD>

在 docker 中,应该可以使用 postgres 数据库的容器名称进行访问。如果postgres-db是容器名称,则命令将更改为以下内容

vault write database/config/<VAULT_CONFIG_NAME> \
  plugin_name=postgresql-database-plugin \
  allowed_roles="*" \
  connection_url="postgresql://{{username}}:{{password}}@postgres-db:5432/postgres" \
  username=<POSTGRES_USER> \
  password=<POSTGRES_PASSWORD>

相关内容