FATAL: password authentication failed for user “postgres“

在做项目的时候需要使用docker建立两个postgresql database指向不同的端口,报错 fatal: password authentication failed for user。使用windows系统的git bash。

version: '2'

services:

  zookeeper:

    image: confluentinc/cp-zookeeper:latest

    environment:

      ZOOKEEPER_CLIENT_PORT: 2181

      ZOOKEEPER_TICK_TIME: 2000

    ports:

      - 22181:2181

  kafka:

    image: confluentinc/cp-kafka:latest

    depends_on:

      - zookeeper

    ports:

      - 29092:29092

    environment:

      KAFKA_BROKER_ID: 1

      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092

      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT

      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT

      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

  db_source:

    image: postgres:14.1-alpine

    restart: always

    environment:

      - POSTGRES_USER=postgres_source

      - POSTGRES_PASSWORD=postgres_source

    ports:

      - '5432:5432'

    volumes:

      - db_source:/var/lib/postgresql/data

  db_target:

    image: postgres:14.1-alpine

    restart: always

    environment:

      - POSTGRES_USER=postgres_target

      - POSTGRES_PASSWORD=postgres_target

    ports:

      - '5434:5432'

    volumes:

      - db_target:/var/lib/postgresql/data

volumes:

  db_source:

    driver: local

  db_target:

    driver: local

docker-compose up -d

1. 密码不匹配

我准备对不同的database设置不同的用户名和密码,于是删除了原来的YAML文件生成的containers并重新运行docker-compose up -d,但是神奇的发现还是只能用之前的密码连接dbeaver或者psql,发现问题在于原来的volume已经存储了密码,新的密码不会覆盖原来的密码

解决方法1:在terminal里删除container和对应的volume再重新运行

docker-compose down -v

解决方法2:绑定一个不同的volume path

    volumes:

      - db_target:/var/lib/postgresql/data1

2. 端口无法实现

解决了上面的问题之后,我发现一样的设置但是一个port 5432一个port 5433,5433的这个怎么都连不上,但是进入到container内部之后psql的指令也是能正常运行的,最后实在不知道为啥于是改成了port 5434竟然成功了,查询5433发生了什么,原来是本地的postgres占用了这个接口,终止程序

$ netstat -ano | findstr 5433
  TCP    0.0.0.0:5433           0.0.0.0:0              LISTENING       8288
  TCP    [::]:5433              [::]:0                 LISTENING       8288

$ tasklist | findstr 8288
postgres.exe                  8288 Services                   0      4,080 K

git bash用taskkill一直报错,powershell出现access deny需要使用管理员权限打开

TASKKILL /F /IM postgres.exe
TASKKILL /F /PID 8288

在排查过程中使用的一些指令:

winpty docker exec -it <container id> bash

psql -h localhost -p <host port> -U <postgres username>

上述两个问题的报错是一样的都是标题所示 fatal: password authentication failed for user,但实际错误内容毫无关系,新手菜鸟排查了一整天表示非常崩溃。。。

参考:

PostgreSQL使用docker部署,设置密码失效问题处理_docker-compose 启动postgresql 设置密码-CSDN博客

Windows查看端口占用、查看PID对应的进程、并终止进程_进程端口占用检测工具-CSDN博客

当出现类似于"psql: error: FATAL: Peer authentication failed for user 'postgres'"的错误提示时,这通常表示登录PostgreSQL数据库时认证失败。这个错误通常发生在使用Peer认证方法和相应的身份验证配置不正确的情况下。 Peer认证是一种基于操作系统用户身份验证的方法,它要求登录用户的操作系统用户必须与PostgreSQL的用户一致。换句话说,你需要使用与PostgreSQL用户相同的操作系统用户来登录。 如果你是通过使用"psql -U postgres"命令登录PostgreSQL遇到这个错误,那么这意味着你正在尝试使用名为"postgres"的操作系统用户来登录PostgreSQL,但是该用户没有通过Peer认证验证。 解决这个问题,你可以尝试以下几种方法: 1. 使用与PostgreSQL用户相匹配的操作系统用户来登录。确保你正在使用正确的用户名和密码,以及正确的Peer认证配置。 2. 如果你想使用名为"kmjy"的用户登录PostgreSQL,你可以尝试使用以下命令登录: "psql -U kmjy"。确保你已经在PostgreSQL中创建了该用户,并且使用正确的密码进行登录。 3. 如果你无法解决这个问题,你可以尝试修改PostgreSQL的身份验证配置文件pg_hba.conf。在这个文件中,你可以更改或添加适当的身份验证方法来满足你的需求。 总结来说,当出现"psql: error: FATAL: Peer authentication failed for user"的错误时,这意味着登录PostgreSQL时认证失败。你可以尝试使用与PostgreSQL用户相匹配的操作系统用户来登录,或者使用正确的用户名和密码来登录。如果仍然无法解决问题,你可以尝试修改PostgreSQL的身份验证配置文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [psql: error: FATAL: Peer authentication failed for userpostgres](https://blog.csdn.net/FatalFlower/article/details/114025262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【PostgreSQL】psql: error: FATAL: Peer authentication failed for userpostgres”](https://blog.csdn.net/wuyy0224/article/details/126737268)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值