Postgresql 无法从本地计算机连接到docker容器中的postgres数据库
我对docker和postgres有一个奇怪的问题。我无法从本地计算机连接到docker容器内的psql 首先,我使用以下命令创建了容器:Postgresql 无法从本地计算机连接到docker容器中的postgres数据库,postgresql,docker,Postgresql,Docker,我对docker和postgres有一个奇怪的问题。我无法从本地计算机连接到docker容器内的psql 首先,我使用以下命令创建了容器: docker run-d-p 5432:5432——命名我的postgres-e postgres\u PASSWORD=mysecretpassword postgres 之后,我使用以下命令执行容器: docker exec-it my postgres bash 在容器内部,我与postgres用户启动了psql: psql-U postgres 我创
docker run-d-p 5432:5432——命名我的postgres-e postgres\u PASSWORD=mysecretpassword postgres
之后,我使用以下命令执行容器:docker exec-it my postgres bash
在容器内部,我与postgres用户启动了psql:psql-U postgres
我创建了一个新数据库:
创建数据库mytestdb代码>
所有东西都在容器中工作,但是如果我想从我的机器连接到它,它只显示我机器上的数据库。我尝试连接到postgres:
psql-h localhost-p5432-U postgres
我应该展示这样的东西:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
mytestdb | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
但我得到的却是:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------------+-----------------+----------+---------+---------+----------------------------------
user | user | UTF8 | C | C |
postgres | user | UTF8 | C | C |
template0 | user | UTF8 | C | C | =c/user +
| | | | | user =CTc/user
template1 | user | UTF8 | C | C | =c/user +
| | | | | user =CTc/user
(4 rows)
(END)
在每一个教程中,我都看到他们这么做了,但对我来说,这不起作用。因此,请帮助我。问题在于创建数据库时。
创建数据库mytestdb
您忘记添加
命令应该类似于CREATE DATABASE mytestdb代码>
然后你就有了数据库,你可以通过这些命令从容器或主机内部访问它我已经创建了数据库,我只是忘记了代码>在我的问题中。你能用另一个端口尝试同样的过程吗?5000例如:docker run-d-p 5000:5432——将我的postgres-e postgres_PASSWORD=mysecretpassword postgres
命名,然后在主机上:psql-h localhost-p 5000-U postgres
问题不在于数据库创建,因为您可以看到它已经检索了容器中的数据库,我想的是,可能您主机上的端口5432已经在监听另一个db,这就是您在连接psql-h localhost-p 5432-U postgres
@J-Mous时看到的端口。我把它改成了5000,它成功了。感谢您执行ss-tln
以查找谁正在侦听您计算机接口上的端口5432。此命令无效。请尝试netstat-tln
。你在运行什么操作系统?我在运行macOS。这个命令有效,我得到了很多数据,但我不明白。你的机器上安装了postgres吗?请尝试更改端口,然后重试