Trying to enter the correct user and password set for the database fails with the extremely helpful error "login failed". As listed below, I have tried all of the common solutions for this issue as found around here, no dice yet.
- Containers are on the same network.
- The database port is the default, and is forwarded.
- Can ping between containers from within.
- Can login to Postgres using
psqlfrom the HOST machine and within database container using credentials below. - Verified the value of
show listen_addresses;is "*". - Watching the log output of Postgres does not show any messages releated to connections when attempting to login using phppgadmin, or errors.
- Provided recommended and required environment variables to the containers.
- I have tried changing the forwarded port of the database container and then changing
PHP_PG_ADMIN_SERVER_PORT, no difference. netstatconfirms the database is listening on the right port on the host.- I have rebuilt the containers many times, including deleting Postgres' data folder.
- Just in case something was off with automatic name resolution, I tried manually substituting the docker IP address of the database container in
PHP_PG_ADMIN_SERVER_HOST.
docker-compose.yaml
networks:
centurion:
name: centurion-net
services:
benard:
image: postgres:latest
restart: always
volumes:
- /opt/containers/benard/persist/data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=pg
- POSTGRES_USER=pg
- POSTGRES_PASSWORD=password
ports:
- "5432:5432"
networks:
- centurion
benard_ui:
depends_on:
- benard
restart: always
image: dockage/phppgadmin:latest
ports:
- "8200:80"
environment:
- PHP_PG_ADMIN_SERVER_DESC=BENARD
- PHP_PG_ADMIN_SERVER_HOST=benard
- PHP_PG_ADMIN_SERVER_PORT=5432
- PHP_PG_ADMIN_SERVER_SSL_MODE=allow
- PHP_PG_ADMIN_SERVER_DEFAULT_DB=template1
- PHP_PG_ADMIN_SERVER_PG_DUMP_PATH=/usr/bin/pg_dump
- PHP_PG_ADMIN_SERVER_PG_DUMPALL_PATH=/usr/bin/pg_dumpall
- PHP_PG_ADMIN_DEFAULT_LANG=auto
- PHP_PG_ADMIN_AUTO_COMPLETE=default on
- PHP_PG_ADMIN_EXTRA_LOGIN_SECURITY=false
- PHP_PG_ADMIN_OWNED_ONLY=false
- PHP_PG_ADMIN_SHOW_COMMENTS=true
- PHP_PG_ADMIN_SHOW_ADVANCED=false
- PHP_PG_ADMIN_SHOW_SYSTEM=false
- PHP_PG_ADMIN_MIN_PASSWORD_LENGTH=1
- PHP_PG_ADMIN_LEFT_WIDTH=200
- PHP_PG_ADMIN_THEME=default
- PHP_PG_ADMIN_SHOW_OIDS=false
- PHP_PG_ADMIN_MAX_ROWS=30
- PHP_PG_ADMIN_MAX_CHARS=50
- PHP_PG_ADMIN_USE_XHTML_STRICT=false
- PHP_PG_ADMIN_HELP_BASE=http://www.postgresql.org/docs/%s/interactive/
- PHP_PG_ADMIN_AJAX_REFRESH=3
networks:
- centurion
If you
docker execinto the phppgadmin container and try to connect to postgres with thepsqlcommand, you'll see:And originally I was going to write about how to configure recent versions of Postgres to use md5 authentication instead, but then I discovered that was pointless:
The version of phppgadmin in the
dockage/phppgadminimage only supports Postgres up to version 12. Using anything more recent results in the error message:It looks like that image was last updated over four years ago, so you may want to find a more recent alternative (or build your own).
With the above limitation in mind, a working configuration looks like this:
Assuming that I have the following
.envfile:Then I can
docker-compose up, connect to http://localhost:8000, and login as userpostgreswith passwordsecret.