无法从我的本地计算机连接到Docker容器中的Postgres数据库

时间:2020-11-10 08:57:30

标签: postgresql docker

我对docker和postgres有一个奇怪的问题。我无法从本地计算机连接到Docker容器内的psql。

首先,我使用以下命令创建了容器:
docker run -d -p 5432:5432 --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres

之后,我使用以下命令执行了容器:
docker exec -it my-postgres bash

在容器中,我用postgres用户启动了psql:
psql -U postgres
我创建了一个新数据库:
CREATE DATABASE mytestdb;

一切都在容器内工作,但是如果我想从我的机器连接到它,它只会显示我机器上的数据库。我尝试使用此方法连接到postgres:
psql -h localhost -p 5432 -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)

在每个教程中,我都看到他们做到了,但是对我来说,它是行不通的。所以请帮助我。

1 个答案:

答案 0 :(得分:0)

问题是在创建数据库时。 answer = input("What's your number?") print(answer) for z in answer: if int(z) < 2: print('SMALL') elif int(z) < 10: print('MEDIUM') else: print('LARGE') 您忘了添加CREATE DATABASE mytestdb,该命令应类似于;

然后您有了数据库,可以使用以下命令从容器或主机内部访问数据库