PostgreSQL端口连接与密码认证失败问题求助
PostgreSQL容器连接失败的解决方法
核心问题点
- 启动容器时配置的用户是
rootone,但连接时误用了toyosione,用户名不匹配 - 容器端口映射为
5433:5432,宿主机需通过5433端口连接,而非容器内部的5432端口 - 本地挂载目录残留旧PostgreSQL数据,导致新的环境变量配置未生效
分步解决步骤
1. 清理旧容器
先停止并删除运行中的PostgreSQL容器:
# 查看容器ID docker ps # 停止容器 docker stop <容器ID> # 删除容器 docker rm <容器ID>
2. 清空挂载目录的旧数据
本地挂载目录若有旧数据会覆盖新配置,需清空:
Remove-Item -Recurse -Force "c:/Users/pc/Desktop/airflow_data_eng/toyosiairflowprojects/nytaxione_taxi_postgres_data/*"
3. 重新启动容器
修正命令格式,确保环境变量和端口映射正确:
docker run -it ^ -e POSTGRES_USER="rootone" ^ -e POSTGRES_PASSWORD="rootone" ^ -e POSTGRES_DB="ny_taxione" ^ -v c:/Users/pc/Desktop/airflow_data_eng/toyosiairflowprojects/nytaxione_taxi_postgres_data:/var/lib/postgresql/data ^ -p 5433:5432 ^ postgres:13
4. 正确连接数据库
使用容器配置的用户和宿主机端口连接:
pgcli -h localhost -p 5433 -u rootone -d ny_taxione
输入密码rootone即可成功连接。
5. 创建表并导入数据
连接成功后,执行SQL创建表:
CREATE TABLE taxi_data ( id SERIAL PRIMARY KEY, pickup_time TIMESTAMP, dropoff_time TIMESTAMP, passenger_count INT );
之后即可导入你的网站文件数据到该表中。
内容的提问来源于stack exchange,提问作者Odusanya Omotoyosi
相关产品推荐
相关产品推荐

