当前位置: 首页 > 知识库问答 >
问题:

从docker外部的客户端连接到postgres对用户postgres具有致命的密码身份验证

淳于博
2023-03-14

我的目标是将客户端数据库(DBeaver,Aginity Pro)连接到在docker容器上运行的PostgreSQL。

从容器内部,与Postgres的连接是成功的。我使用了Adminer和PSQL,连接正常。我可以创建数据库、表格、加载数据。然而,使用来自客户端数据库的相同连接字符串,我得到了一条消息:致命:用户“postgres”的密码身份验证失败

如果有人在Win10 x64 Pro上与PostgresqlDocker和DBeaver有工作联系,我将不胜感激,请分享环境和它所做的事情。非常感谢。

以下是步骤:

  1. 下载适用于Windows的Docker.
  2. 创建一个YML文件。
  3. 运行Docker.
  4. 使用Adminer和PSQL检查到Postgres的连接。成功。
  5. 使用DBeaver和Aginity Pro检查到Postgres的连接。失败。

文件YML:

version: '3.6'
services:
  db:
    image: postgres:9.6-alpine
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - 5432:5432
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

运行docker:

docker-compose up -d

使用管理员和PSQL检查连接:

1.管理员

http://localhost:8080/?pgsql=db

它显示了管理控制台,我可以看到表格,并创建自己的数据结构。

2.PSQL

在这里,我创建了表格。

docker exec -it postgres_db_1 bash

bash-5.1#

bash-5.1# su postgres
/ $

/ $ psql
psql (9.6.20)
Type "help" for help.

postgres=#
postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)


检查与DBeaver的连接

数据库连接设置

我尝试将Postgres与DBeaver和Aginity Pro连接起来:

  1. 更改图像。我还使用了三种不同的图像:
image: postgres

image: alpine

image: postgres:9-alpine
local   all         postgres                          ident

我也换了身份证。我在最后补充道:

host   all         all          all               md5

host   all         all          *               trust

我试着单独使用md5,也试着单独使用trust。

ALTER USER postgres PASSWORD 'postgres';

我用portqryui检查了监听端口。它是监听。

=============================================

 Starting portqry.exe -n 127.0.0.1 -e 5432 -p TCP ...


Querying target system called:

 127.0.0.1

Attempting to resolve IP address to a name...


IP address resolved to kubernetes.docker.internal

querying...

TCP port 5432 (unknown service): LISTENING
portqry.exe -n 127.0.0.1 -e 5432 -p TCP exits with return code 0x00000000.

环境:

  • 所以:Windows 10 Pro x64
  • Docker桌面版:3.1.0(51484)。引擎:20.10.2。作曲:1.27.1。库伯内特斯:v1。19.3.
  • DBeaver版本:社区版7.3.3
  • Aginity Pro版本:0.32.836

我使用的突出显示的链接:

>

https://reachmnadeem.wordpress.com/2020/06/02/running-postgresql-database-in-docker-and-connecting-from-host-outside-container/

Postgresql:用户“postgres”的密码身份验证失败

共有1个答案

鲁昕
2023-03-14

检查是否有本地安装的PostgreSQL服务器在Windows计算机上运行。

如果是这样,请停止服务并重新测试DBeaver连接。如果可行,则更改本地服务器或docker容器主机端口的端口。

 类似资料: