Подключение к PostgreSQL: GUI Postico и TablePlus DB не могут подключиться, но `psql` в Docker работает (FATAL: аутентификация по паролю не удалась для пользователя)
Я развернул свою базу данных PostgreSQL локально с помощью Docker. Это мой файл Docker Compose:
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.30-alpha
restart: always
ports:
- "4466:4466"
environment:
PRISMA_CONFIG: |
port: 4466
# uncomment the next line and provide the env var PRISMA_MANAGEMENT_API_SECRET=my-secret to activate cluster security
# managementApiSecret: my-secret
prototype: true
databases:
default:
connector: postgres
host: postgres
user: prisma
password: prisma
port: 5432
postgres:
image: postgres
restart: always
environment:
POSTGRES_USER: prisma
POSTGRES_PASSWORD: prisma
volumes:
- postgres:/var/lib/postgresql/data
volumes:
postgres:
Я начал это с docker-compose up -d
,
Контейнеры Docker работают:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26b14120f89f prismagraphql/prisma:1.30-alpha "/bin/sh -c /app/sta…" 17 minutes ago Up 17 minutes 0.0.0.0:4466->4466/tcp newdm1_prisma_1
05dfdaeaf609 postgres "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 5432/tcp newdm1_postgres_1
Теперь по какой-то причине я не могу подключиться, используя графический интерфейс базы данных (попробовав Postico и TablePlus). В обоих клиентах я получаю следующую ошибку:
FATAL: аутентификация по паролю не удалась для пользователя "prisma"
Я на 100% уверен, что я предоставляю prisma
как пароль, указанный в файле Docker Compose.
Кроме того, когда я подключаюсь к базе данных, используя psql
изнутри postgres
Контейнер Docker, он работает:
docker exec -it 05dfdaeaf609 bash
Затем внутри контейнера Docker я делаю это:
root@05dfdaeaf609:/# psql -U prisma -W prisma
Password:
psql (11.1 (Debian 11.1-1.pgdg90+1))
Type "help" for help.
prisma=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+--------+----------+------------+------------+-------------------
postgres | prisma | UTF8 | en_US.utf8 | en_US.utf8 |
prisma | prisma | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | prisma | UTF8 | en_US.utf8 | en_US.utf8 | =c/prisma +
| | | | | prisma=CTc/prisma
template1 | prisma | UTF8 | en_US.utf8 | en_US.utf8 | =c/prisma +
| | | | | prisma=CTc/prisma
(4 rows)
prisma=# \c prisma
Password for user prisma:
You are now connected to database "prisma" as user "prisma".
Пароль, который я указал внутри psql
было prisma
аналогично тем, которые я предоставил в Postico и TablePlus.
Есть ли что-то особенное, что мне нужно сделать при подключении к БД PostgreSQL в контейнере Docker?
1 ответ
PORTS
0.0.0.0:4466->4466/tcp
5432/tcp
Если вы проверите столбец портов docker ps
команда, вы поймете, что порт Postgres не доступен для использования на хост-машине.
Чтобы решить эту проблему, вам нужно добавить следующее в docker-compose.yml
файл:
ports:
- "5432:5432"
Сделать полный файл похожим на это:
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.30-alpha
restart: always
ports:
- "4466:4466"
environment:
PRISMA_CONFIG: |
port: 4466
# uncomment the next line and provide the env var PRISMA_MANAGEMENT_API_SECRET=my-secret to activate cluster security
# managementApiSecret: my-secret
prototype: true
databases:
default:
connector: postgres
host: postgres
user: prisma
password: prisma
port: 5432
postgres:
image: postgres
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_USER: prisma
POSTGRES_PASSWORD: prisma
volumes:
- postgres:/var/lib/postgresql/data
volumes:
postgres:
а потом нужно бежать docker-compose up -d
применить новые изменения. При правильной настройке PORTS
столбец docker ps
должен выглядеть так
PORTS
0.0.0.0:4466->4466/tcp
0.0.0.0:5432->5432/tcp