Solución:
NOTA: Si instaló postgres usando homebrew, vea el comentario de @ user3402754 a continuación.
Tenga en cuenta que el mensaje de error no NO habla de una base de datos que falta, habla de una función que falta. Más adelante en el proceso de inicio de sesión, también podría tropezar con la base de datos que falta.
Pero el primer paso es verificar el rol que falta: ¿Cuál es el resultado dentro psql
del comando du
? En mi sistema Ubuntu, la línea relevante se ve así:
List of roles
Role name | Attributes | Member of
-----------+-----------------------------------+-----------
postgres | Superuser, Create role, Create DB | {}
Si no hay al menos un rol con superuser
, entonces tienes un problema 🙂
Si hay uno, puede usarlo para iniciar sesión. Y mirando la salida de tu l
comando: Los permisos para user
sobre el template0
y template1
las bases de datos son las mismas que en mi sistema Ubuntu para el superusuario postgres
. Así que creo que tu configuración usa user
como superusuario. Entonces podrías probar este comando para iniciar sesión:
sudo -u user psql user
Si user
es realmente el superusuario de DB, puede crear otro superusuario de DB y una base de datos privada y vacía para él:
CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;
Pero dado que su configuración de postgres.app no parece hacer esto, tampoco debería hacerlo. Adapte el tutorial simple.
La clave es “Instalé postgres.app para mac”. Esta aplicación configura la instalación local de PostgreSQL con un superusuario de base de datos cuyo nombre de función es el mismo que su nombre de inicio de sesión (abreviado).
Cuando Postgres.app se inicia por primera vez, crea la base de datos $ USER, que es la base de datos predeterminada para psql cuando no se especifica ninguna. El usuario predeterminado es $ USER, sin contraseña.
Algunos scripts (por ejemplo, una copia de seguridad de la base de datos creada con pgdump
en un sistema Linux) y los tutoriales supondrán que el superusuario tiene el nombre de rol tradicional de postgres
.
Puede hacer que su instalación local parezca un poco más tradicional y evitar estos problemas haciendo una sola vez:
/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres
que hará esos FATAL: el rol “postgres” no existe irse.
Para Mac:
- Instalar Homebrew
brew install postgres
initdb /usr/local/var/postgres
-
/usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres
o/usr/local/opt/postgres/bin/createuser -s postgres
que solo usará la última versión. - iniciar el servidor de Postgres manualmente:
pg_ctl -D /usr/local/var/postgres start
Para iniciar el servidor al inicio
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Ahora, está configurado, inicie sesión usando psql -U postgres -h localhost
o use PgAdmin para GUI.
Por usuario predeterminado postgres
no tendrá ninguna contraseña de inicio de sesión.
Consulte este sitio para obtener más artículos como este: https://medium.com/@Nithanaroy/installing-postgres-on-mac-18f017c5d3f7