rol rails postgres not name fatal existe exist does developer macos postgresql terminal

macos - name - rails postgresql fatal role does not exist



psql: FATAL: el rol "postgres" no existe (14)

Soy un novato de postgres.

Instalé el postgres.app para mac. Estaba jugando con los comandos psql y accidentalmente eliminé la base de datos de Postgres. No sé lo que había en él.

Actualmente estoy trabajando en un tutorial: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/

Y estoy atascado en sudo -u postgres psql postgres

MENSAJE DE ERROR: psql: FATAL: role "postgres" does not exist

$ que psql

/Applications/Postgres.app/Contents/MacOS/bin/psql

Esto es lo que se imprime de psql -l

List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ------------+------------+----------+---------+-------+--------------------------- user | user | UTF8 | en_US | en_US | template0 | user | UTF8 | en_US | en_US | =c/user + | | | | | user =CTc/user template1 | user | UTF8 | en_US | en_US | =c/user + | | | | | user =CTc/user (3 rows)

¿Cuáles son los pasos que debo tomar? ¿Borrar todo lo relacionado con psql y reinstalar todo?

¡Gracias por la ayuda chicos!


Dejar caer la postgres datos postgres realmente no importa. Esta base de datos está inicialmente vacía y su propósito es simplemente que el usuario de postgres tenga una especie de "hogar" para conectarse, en caso de que la necesite.

Aún así, puedes recrearlo con el comando SQL CREATE DATABASE postgres;

Tenga en cuenta que el tutorial mencionado en la pregunta no está escrito teniendo en cuenta postgres.app . Al contrario de PostgreSQL para Unix en general, postgres.app trata de parecer una aplicación normal en lugar de un servicio que sería ejecutado por un usuario de postgres dedicado con diferentes privilegios que su usuario normal. postgres.app es ejecutado y administrado por su propia cuenta.

Entonces, en lugar de este comando: sudo -u postgres psql -U postgres , sería más en el espíritu de postgres.app simplemente emitir: psql , que se conecta automáticamente a una base de datos que coincide con el nombre de sus usuarios, y con una cuenta de db del mismo nombre que pasa a ser superusuario, por lo que puede hacer cualquier cosa con respecto a los permisos.


Ejecutar esto en la línea de comandos debería arreglarlo

/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>


El comando /du devuelve:

Role name = postgres@implicit_files

Y ese comando postgres=# /password postgres devuelve error:

ERROR: el rol "postgres" no existe.

Pero ese postgres=# /password postgres@implicit_files funciona bien.

También después de sudo -u postgres createuser -s postgres también funciona la primera variante.


Este es el único que me lo arregló:

createuser -s -U $USER


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 (breve).

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 $ USUARIO, 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 asumirán que el superusuario tiene el nombre de rol tradicional de postgres .

Puede hacer que su instalación local se vea un poco más tradicional y evitar estos problemas haciendo una sola vez:

/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres

lo que hará que FATAL: rol "postgres" no exista .


Me quedé atascado en este problema después de haber ejecutado los brew services stop postgresql el día anterior.
El día siguiente: brew services start postgresql no funcionaría. Esto se debe a que se muestra cuando instala con homebrew. postgresql usa un launchd ... que se carga cuando la computadora está encendida.

resolución:
brew services start postgresql
Reinicia tu computadora.


Necesitaba $PGUSER :

$ unset PGUSER $ createuser -s postgres


No creo que se necesite sudo aquí porque psql -l devuelve una lista de bases de datos. Esto me dice que initdb se ejecutó bajo el usuario actual del usuario, no bajo el usuario postgres.

Tu puedes sólo:

psql

Y continúa el tutorial.

Sugeriría los puntos generales de AH para crear el usuario de postgres y db porque muchas aplicaciones pueden esperar que esto exista.

Una breve explicación:

PostgreSQL no se ejecutará con acceso administrativo al sistema operativo. En su lugar, se ejecuta con un usuario normal, y para admitir la autenticación entre pares (preguntando al sistema operativo que intenta conectarse) crea un usuario y db con el usuario que ejecuta el proceso de inicialización. En este caso fue tu usuario normal.


Para Mac:

  1. Instalar homebrew
  2. brew install postgres
  3. initdb /usr/local/var/postgres
  4. /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.
  5. iniciar el servidor de pg_ctl -D /usr/local/var/postgres start manualmente: pg_ctl -D /usr/local/var/postgres start

Para iniciar el servidor en el 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 con psql -U postgres -h localhost o use PgAdmin para GUI.

Por defecto, el usuario postgres no tendrá ninguna contraseña de inicio de sesión.

Visite este sitio para ver más artículos como este: https://medium.com/@Nithanaroy/installing-postgres-on-mac-18f017c5d3f7



Por lo que vale la pena, tengo ubuntu y muchos paquetes instalados y entraron en conflicto con él.

Para mi la respuesta correcta fue:

sudo -i -u postgres-xc psql


Tenga en cuenta que el mensaje de error NO habla de una base de datos faltante, sino de un rol faltante. 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 faltante: ¿Cuál es el resultado dentro de 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 tiene un problema :-)

Si hay uno, puedes usarlo para iniciar sesión. Y mirando la salida de su comando /l : Los permisos para el user en las bases de datos template0 y template1 son los mismos que en mi sistema Ubuntu para los postgres superusuario. Así que creo que su configuración sencilla utiliza al user como superusuario. Así que puedes probar este comando para iniciar sesión:

sudo -u user psql user

Si el 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 como la configuración de postgres.app no ​​parece hacer esto, tampoco debería hacerlo. Simplemente adapta el tutorial.


Primero necesitas crear un usuario:

sudo -u postgres createuser --superuser $USER

Después de crear una base de datos:

sudo -u postgres createdb $USER

Cambie $USER a su nombre de usuario del sistema.

Puedes ver la solución completa here .


createuser postgres --interactive

o hacer un superusuario postgresl solo con

createuser postgres -s