Tôi đã tạo lại kịch bản của bạn theo cách này:
# docker run -p 5431:5432 --name postgres2 -e POSTGRES_PASSWORD=ad1234 -d postgres
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4030c577a24 postgres "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:5431->5432/tcp postgres2
# sudo -u postgres psql -h localhost -p 5431
could not change directory to "/root": Permission denied
Password:
psql (10.5, server 11.2 (Debian 11.2-1.pgdg90+1))
WARNING: psql major version 10, server major version 11.
Some psql features might not work.
Type "help" for help.
postgres=# CREATE DATABASE mytestdb;
CREATE DATABASE
postgres=# \q
Hiện đang khởi động docker cho pgadmin và có thể kết nối với postgresql:
docker run -p 80:80 --link postgres2 -e "[email protected]" -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" -d dpage/pgadmin4
Với lệnh trên, bạn có thể liên kết trình docker postgres2 với docker pgadmin và sau đó khi tạo kết nối trên pgadmin4, bạn nên sử dụng:
- tên / địa chỉ máy chủ:postgres2
- cổng:5432
- Cơ sở dữ liệu bảo trì:postgres
- tên người dùng:postgres
với điều đó, tôi đã kết nối với Postgres từ pgadmin4
Theo như tôi biết, docker PostgreSQL mặc định chỉ có kết nối localhost và nếu bạn muốn thêm kết nối từ xa, bạn nên thêm "listening_addresses ='*'" vào postgresql.conf