赞
踩
在做项目的时候需要使用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博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。