J'ai téléchargé le conteneur docker pour postgres: https://hub.docker.com/r/library/postgres/ et procédez comme suit:
$ docker run --name satgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
satgres | "docker-entrypoint.s…" | 5 seconds ago | Up 6 seconds | 0.0.0.0:5432->5432/tcp | satgres
$ docker exec -it c8f1b22cc41e /bin/bash
# psql -U postgres
psql (10.1)
postgres=# CREATE DATABASE mytest;
postgres=# \password postgres
postgres=# CREATE ROLE ming WITH LOGIN PASSWORD 'pass1234';
postgres=# ALTER ROLE ming CREATEDB;
postgres=# CREATE DATABASE sjk;
postgres=# GRANT ALL PRIVILEGES ON DATABASE youtube TO ming;
postgres=# \connect sjk
youtube=# ALTER ROLE ming lOGIN;
Mon plan est d’utiliser cette base de données sur docker avec Django, donc d’abord, vérifiez si je peux me connecter, mais je ne peux pas.
$ psql -h localhost -p 5432 -U postgres
$ psql: FATAL: role "postgres" does not exist
$ psql -h localhost -p 5432 -U ming
$ psql: FATAL: role "ming" does not exist
Je fais la même chose avec PSequal.app, dit la même chose, Je tourne sous Mac High Sierra.
Pourquoi est-ce que je reçois cette erreur? Le rôle existe, ou du moins me semble-t-il ...
Le problème était assez simple: mon ordinateur exécutait déjà une instance de Postgres dont je ne savais pas qu'elle était toujours en cours d'exécution (pas dans Docker) sur :5432
, vérifiée avec:
$ lsof -n -i:5432 | grep LISTEN
Je me suis donc rappelé que je l'avais installé via https://Gist.github.com/sgnl/609557ebacd3378f3b72 , j'ai couru
$ pg-stop
Et puis je n’ai eu aucun problème pour me connecter à l’instance Docker.
Dans mon cas, le problème peut aussi être dû à l'utilisation d'un super utilisateur qui n'est pas postgres. Les développeurs ont choisi l'utilisateur georchestra dans la composition du docker de geOrchestra ..___
environment:
- POSTGRES_USER=georchestra
HEALTHCHECK --interval=30s --timeout=30s \
CMD pg_isready -U $POSTGRES_USER
par conséquent, vous devrez utiliser l'option "-U georchestra" pour vous connecter au conteneur.
$ docker exec -it docker_database_1 psql -U georchestra
psql (10.5 (Debian 10.5-1.pgdg90+1))
Type "help" for help.
et bien sûr, essayer de se connecter avec l'utilisateur postgres provoque une erreur:
docker exec -it docker_database_1 psql -U postgres
psql: FATAL: role "postgres" does not exist