如何通过 vbscript 从 Windows 桌面连接到 docker(linux)容器中的 PostgreSql 数据库

如何通过 vbscript 从 Windows 桌面连接到 docker(linux)容器中的 PostgreSql 数据库

当我尝试通过 vbscript 从 Windows 桌面连接到(Linux)docker 容器中的 PostgreSql 数据库时遇到以下错误:

用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序(30、11):严重错误:用户“dev”的密码验证失败严重错误:用户“dev”的密码验证失败

以下是演示 vb 代码:

Dim cn
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
 
  'Open the Postgre Databse connection (Driver must be installed)
  cn.Open "Driver={PostgreSQL ANSI};" & _
          "Server=localhost;" & _
          "Port=5432;" & _
          "UID=dev;" & _
          "PWD=dev;" & _
          "Database=dbname;"
                    
  rs.Open "SELECT * FROM tablename", cn

  While Not rs.EOF
    WScript.Echo( rs("id") & ": " & rs("name"))
   rs.MoveNext
  Wend

这是docker-compose.yml:

version: "3.8"

services:
  anon-db:
    image: postgres:9.6.3
    environment:
      POSTGRES_USER: dev
      POSTGRES_PASSWORD: dev
      POSTGRES_DB: dbname
    ports:
    - 5432:5432
    volumes:
      - anon-pgdata:/var/lib/postgresql/data
    container_name: anon-db

上面的 Vbscript 与非容器化的 PostgreSQL 数据库配合得很好。有人能找出容器设置或代码中的其他问题吗?给出的错误说明了密码/身份验证问题,但我不明白为什么。

答案1

我自己找到了解决方案 - 问题的原因是:如果容器化的(即主机暴露的)postgre 服务器与非容器化的 postgre 服务器同时运行,则连接不起作用。

关闭非容器化的 postgre-server 后,与容器化的 postgre-server 的连接正常进行。

以下链接的最后一条评论对此有所暗示:https://social.msdn.microsoft.com/Forums/windows/es-ES/6a2fda0a-69b1-4503-8aee-a223e4e9a9d2/fatal-password-authentication-failed-for-user?forum=netfxes

相关内容