Home  >  Article  >  Backend Development  >  How to use password with official postgres docker image?

How to use password with official postgres docker image?

WBOY
WBOYforward
2024-02-05 21:45:121221browse

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

Question content

Try to use the official postgres docker image:

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

However, when using Go to create a postgres connection,

        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)
        }

I always end with

panic: pq: Password verification failed for user "postgres"

I don't have any other way to verify mysuperduperlongpwstring:

  • Try using psql -U postgres -d postgres --password Just connect to the database from within the docker container and provide anything as the password.
  • Trying to change the password from within the docker container will result in

Error: Must be superuser to change replication roles or change replication properties

That said, basically the following answers no longer work for me:

  • How to change the Postgresql docker image password
  • How to change PostgreSQL user password?

Due to lack of resources, I changed mysuperduperlongpwstring multiple times when starting docker and changed my Go PW accordingly, but ended up with the same failure every time.

May I ask what the problem is and how to troubleshoot it? How to reset password using official postgres docker?


Correct answer


In the Docker container, set what you show and start with an empty volume, "postgres" will be the superuser so you won't receive Bug about it needing to be superuser.

The only reasonable explanation I see for this part is that either you are not running psql where you think you are, or you are not starting from an empty volume, so your docker run command just starts An existing database, so your "-e POSTGRES*" configurations are all ignored. So either way, you're either not connected the way you thought it was, or it's not configured the way you thought it was.

The above is the detailed content of How to use password with official postgres docker image?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete