Heim >Backend-Entwicklung >Golang >Wie verwende ich ein Passwort mit dem offiziellen Postgres-Docker-Image?

Wie verwende ich ein Passwort mit dem offiziellen Postgres-Docker-Image?

WBOY
WBOYnach vorne
2024-02-05 21:45:121263Durchsuche

如何将密码与官方 postgres docker 镜像一起使用?

Frageninhalt

Versuchen Sie, das offizielle Postgres-Docker-Image zu verwenden:

docker run --rm -d \
        --name my-postgres \
        --network my-network \
        -e POSTGRES_USER=postgres \
        -e POSTGRES_PASSWORD=mysuperduperlongpwstring \
        -e POSTGRES_DB=postgres \
        -v /path/to/postgres/data/:/var/lib/postgresql/data
        postgres

Beim Erstellen einer Postgres-Verbindung mit Go,

        psqlInfo := fmt.Sprintf(
                "host=%s port=%s user=%s password=%s dbname=%s sslmode=%s",
                os.Getenv("DB_HOST"),
                os.Getenv("DB_PORT"),
                os.Getenv("DB_USER"),
                os.Getenv("DB_PASSWORD"),
                os.Getenv("DB_NAME"),
                os.Getenv("DB_SSL_MODE"),
        )
        db, err := sql.Open("postgres", psqlInfo)
        if err != nil {
                panic(err)
        }

Ich beende immer mit

panic: pq: 用户“postgres”的密码验证失败

Ich habe keine andere Möglichkeit, dies zu überprüfen mysuperduperlongpwstring:

  • Versuchen Sie, psql -U postgres -d postgres --password zu verwenden, um vom Docker-Container aus eine Verbindung zur Datenbank herzustellen, und geben Sie alles an, da das Passwort ausreicht.
  • Wenn Sie versuchen, das Passwort im Docker-Container zu ändern, erhalten Sie

错误:必须是超级用户才能更改复制角色或更改复制属性

Das heißt, im Grunde funktionieren die folgenden Antworten für mich nicht mehr:

  • So ändern Sie das Postgresql-Docker-Image-Passwort
  • Wie ändere ich das PostgreSQL-Benutzerpasswort?

Aufgrund fehlender Ressourcen habe ich mysuperduperlongpwstring beim Starten von Docker mehrmals geändert und mein Go-PW entsprechend geändert, am Ende kam es jedoch jedes Mal zum gleichen Fehler.

Was ist das Problem und wie kann man es beheben? Wie setze ich das Passwort mit dem offiziellen Postgres-Docker zurück?


Richtige Antwort


Legen Sie im Docker-Container fest, was Sie anzeigen möchten, und beginnen Sie mit einem leeren Volume. „postgres“ ist ein Superuser, sodass Sie keine Fehlermeldung erhalten, dass es ein Superuser sein muss.

Die einzig vernünftige Erklärung, die ich für diesen Teil sehe, ist, dass Sie psql entweder nicht dort ausführen, wo Sie denken, dass Sie sich befinden, oder dass Sie nicht mit einem leeren Volume beginnen, sodass Ihr docker run-Befehl einfach eine vorhandene Datenbank startet, daher Ihr „ - e POSTGRES*“-Konfigurationen werden alle ignoriert. So oder so ist die Verbindung entweder nicht so, wie Sie es sich vorgestellt haben, oder es ist nicht so konfiguriert, wie Sie es sich vorgestellt haben.

Das obige ist der detaillierte Inhalt vonWie verwende ich ein Passwort mit dem offiziellen Postgres-Docker-Image?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen