我是新来的码头和邮递员,这真是令我费解。在提取postgres 14.1高寒映像之后,我从名为postgres14.1的映像中创建了一个容器,用于设置用户和密码:
docker run --name postgres14.1 -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=secret -d postgres:14.1-alpine然后,我在容器上创建了一个名为“simple_bank”的数据库:
docker exec -it postgres14.1 createdb --username=root --owner=root simple_bank在用postgres扩展连接到TablePlus或VSCode中的数据库之前,我尝试在终端中访问:
docker exec -it postgres14.1 psql simple_bank而且效果很好。在终端中,\du+确认root确实是simple_bank数据库中的超级用户:
Role name | Attributes | Member of | Description
-----------+------------------------------------------------------------+-----------+-------------
root | Superuser, Create role, Create DB, Replication, Bypass RLS | {} | 然后,我尝试使用以下配置通过TablePlus连接:
Host/Socket: 127.0.0.1
Port:5432
User:root
Password:secret
Database:root这是不能连接的,说角色root不退出。如果将用户保留为空白,并将数据库设置为postgres,则该数据库将连接,但它无法找到从命令行创建的simple_bank数据库。
发布于 2022-02-21 02:04:57
最后,问题在于我已经安装了postgres的本地实例,并且默认情况下它还连接到本地计算机上的端口5432。因此,在创建postgres容器时,我需要在本地主机上选择不同的端口。因此,更改下面的docker命令,然后使用端口5433进行本地连接,就解决了这个问题。
docker run --name postgres14.1 -p 5433:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=secret -d postgres:14.1-alpinehttps://stackoverflow.com/questions/71195100
复制相似问题