提问人:denisiam 提问时间:11/8/2023 更新时间:11/8/2023 访问量:32
在 Windows 上使用 Dbeaver 连接到 Docker 中的 Postgres
Connecting to Postgres in Docker using Dbeaver on Windows
问:
Docker 正在使用 Ubuntu 发行版开发 WSL。我刚刚开始尝试使用数据库,遇到了一些困难。问题是我无法使用 Dbeaver 或 pgadmin 连接到 Docker 数据库。
docker-compose
文件:
在我得到 2 个容器之后。首先是我的数据库,其次是管理员。从“pagila”容器的“检查”文件中,我得到了IP地址,并尝试使用此IP地址在Dbeaver中连接到它。docker-compose up
从我得到的这个端口是本地主机上的“正在侦听”。
从 PID 的任务管理器中,我得到了这个,我可以使用命令行连接到这个
控制器。它是成功的。netstat -ano
docker exec -it pagila psql -U postgres
也许我应该在主机上连接?但还有其他问题:0.0.0.0
我尝试了不同的连接变体,但没有一个有效。有人可以帮我吗?也许有什么我不明白的地方。
如果我尝试在本地主机上连接,它将是本地服务器。但是我想从 docker 获取数据库......
答:
在使用 Docker 容器时,尤其是使用 时,请务必记住,设置一个虚拟网络,允许容器通过同一子网(在您的情况下)相互通信。主机无法访问此子网。相反,通过公开端口和映射端口(在本例中),Docker 允许访问该虚拟网络中的容器/服务。docker-compose
docker-compose
172.23.0.*
6543:5432
因此,要使用 DBeaver 连接到数据库,需要使用主机名或环回 IP(),并访问暴露的端口 ()。因此,在 DBeaver 中,您需要使用 和localhost
127.0.0.1
6543
host=localhost
port=6543
关于您的密码,由于您在文件中定义了密码,因此您应该能够使用 DBeaver 访问数据库。但是,请记住,此密码是在阶段(创建容器时)设置的。如果您的文件包含某种语句,您将覆盖密码。POSTGRES_PASSWORD=1313
docker-compose.yml
1313
initdb
1-pagila-schema.sql
ALTER USER postgres WITH PASSWORD ...
1313
密码的另一种可能性是,由于您使用 调用 ,因此可能存在一个具有预定义密码的预先存在的数据库。我不是 100% 确定,但如果有一个预先存在的数据库,则不会被调用,因此密码不会设置为 ,因此请相应地进行调整。pgdata:/var/lib/postgresql/data
initdb
1313
评论
0.0.0.0
host=127.0.0.1
port=6543
host=localhost
host=127.0.0.1
port=6543