我在这方面花了3-4个小时,仍然没有找到解决方案。
我可以成功地运行docker容器并使用容器bash中的psql,但是,当我尝试从本地机器调用db时,我仍然会收到以下错误消息:
error role "postgres" does not exist
我已经尝试过编辑";listen_addresss"在容器bash 的postgresql.conf文件中
我的设置:我正在使用macbook-蒙特利12.4
我的docker撰写文件:版本:"3.4">
services:
postgres:
image: postgres:latest
ports:
- "5432:5432"
environment:
- POSTGRES_DB=postgres_db
- POSTGRES_USER=testUser
- POSTGRES_PASSWORD=testPW
volumes:
- postgres-data:/var/lib/postgresql/db
但如果我也通过标准CLI命令执行此操作,则会出现此问题,即:
docker run -d -p 5432:5432 --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres
我试着遵循这个教程,但没有成功:[https://betterprogramming.pub/connect-from-local-machine-to-postgresql-docker-container-f785f00461a7][1]
当我尝试此命令时:psql -h localhost -p 5432 -U postgres -W
它不起作用:psql: error: connection to server at "localhost" (::1), port 5432 failed: FATAL: role "postgres" does not exist
同样为了参考,用户";postgres";确实存在于postgres中-作为超级用户
感谢大家在这方面的帮助。
事实证明,问题是我也在本地机器上运行postgres。
所以一旦我关掉它,我就可以连接了。
感谢您抽出时间!
在compose配置中将POSTGRES_USER=testUser
替换为POSTGRES_USER=postgres
。同时使用POSTGRES_PASSWORD
中定义的密码。删除旧容器并创建一个新容器。