Essayez d'utiliser l'image officielle du docker postgres :
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
Cependant, lors de la création d'une connexion postgres à l'aide de 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) }
Je termine toujours par
panic: pq: 用户“postgres”的密码验证失败
Je n'ai aucun autre moyen de vérifier mysuperduperlongpwstring
:
psql -U postgres -d postgres --password
pour vous connecter à la base de données à partir du conteneur Docker et fournissez n'importe quoi car le mot de passe fera l'affaire. 错误:必须是超级用户才能更改复制角色或更改复制属性
Cela dit, en gros, les réponses suivantes ne fonctionnent plus pour moi :
En raison du manque de ressources, j'ai changé mysuperduperlongpwstring
plusieurs fois au démarrage de Docker et j'ai modifié mon Go PW en conséquence, mais je me suis retrouvé avec le même échec à chaque fois.
Quel est le problème et comment le résoudre ? Comment réinitialiser le mot de passe à l'aide du docker officiel de Postgres ?
Dans le conteneur Docker, définissez ce que vous affichez et commencez avec un volume vide, "postgres" sera superutilisateur afin que vous n'obteniez pas d'erreur indiquant qu'il doit être superutilisateur.
La seule explication raisonnable que je vois pour cette partie est que soit vous n'exécutez pas psql là où vous pensez être, soit vous ne démarrez pas avec un volume vide, donc votre commande docker run
démarre simplement une base de données existante, d'où votre " - Les configurations POSTGRES*" sont toutes ignorées. Quoi qu'il en soit, soit vous n'êtes pas connecté comme vous le pensiez, soit il n'est pas configuré comme vous le pensiez.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!