微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pgadmin4 不会更改 docker compose 中的默认电子邮件和密码

如何解决pgadmin4 不会更改 docker compose 中的默认电子邮件和密码

我正在尝试使用 docker-compose 为开发目的设置 postgres 环境。我创建了一个 docker-compose 文件,上面有 postgress 和 pgadmin4,但挑战是即使在设置环境后我也无法登录或更改 pgadmin 的认电子邮件和密码。

version: "3"

services:
  postgresql:
    container_name: postgres
    image: postgres
    command: postgres -c config_file=/etc/postgresql/postgresql.conf
    restart: always
    tty: true
    environment:
      POSTGRES_USER: '${POSTGRES_USER}'
      POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}'
    networks:
      - postgres
    ports:
      - 5400:5432
    expose:
      - '5400'
    volumes:
      - ./docker/db/conf/postgresql.conf:/etc/postgresql/postgresql.conf
      - ./docker/db/data:/var/lib/postgresql/data
      - ./docker/db/sql:/docker-entrypoint-initdb.d
  pgadmin:
    container_name: pgadmin
    image: "dpage/pgadmin4:4.24"
    tty: true
    environment:
      PGADMIN_DEFAULT_EMAIL: '${PGADMIN_DEFAULT_EMAIL}'
      PGADMIN_DEFAULT_PASSWORD: '${PGADMIN_DEFAULT_PASSWORD}'
      PGADMIN_CONfig_SERVER_MODE: '${PGADMIN_CONfig_SERVER_MODE}'
      PGADMIN_CONfig_MASTER_PASSWORD_required: '${PGADMIN_CONfig_MASTER_PASSWORD_required}'
    networks:
      - postgres
    ports:
      - 15433:80
    expose:
      - '15433'
    entrypoint:
      - "/bin/sh"
      - "-c"
      - "/bin/echo 'postgres:5432:*:postgres:password' > /tmp/pgpassfile && chmod 600 /tmp/pgpassfile && /entrypoint.sh"
    restart: unless-stopped
    volumes:
      - ./docker/pgadmin:/var/lib/pgadmin
      - ./docker_pgadmin_servers.json:/pgadmin4/servers.json
    depends_on:
      - postgresql
    links:
      - postgresql

networks:
  postgres:
    driver: bridge

pgadmin 窗口在浏览器中加载并提示我输入 postgres 密码,但我输入时说它无效:

FATAL: password authentication Failed for user "postgres"

这是日志中的错误

| 2021-07-30 08:40:37.733 UTC [33] DETAIL:  Role "postgres" does not exist.
postgres      |     Connection matched pg_hba.conf line 99: "host all all all md5"
pgadmin       | 2021-07-30 08:40:37,733: ERROR  flask.app:  Could not connect to server(#1) - 'Docker Compose'.
pgadmin       | Error: FATAL:  password authentication Failed for user "postgres"
pgadmin       | password retrieved from file "/tmp/pgpassfile"

这是我的servers.json文件

{
    "Servers": {
      "1": {
        "Name": "Docker Compose","Group": "Servers","Port": 5432,"Username": "postgres","Host": "postgres","SSLMode": "prefer","MaintenanceDB": "postgres","PassFile": "/tmp/pgpassfile"
      }
    }
  }

请问我会遗漏什么?

解决方法

我想通了。与数据库用户中的拼写错误有关。 posgress 而不是 postgres。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。