Error de PostgreSQL: fatal: el rol “nombre de usuario” no existe

Estoy configurando mi PostgreSQL 9.1. No puedo hacer nada con PostgreSQL: no puedo createuser , no puedo createuser ; todas las operaciones devuelven el mensaje de error

 Fatal: role h9uest does not exist 

h9uest es mi nombre de cuenta, y sudo apt-get install PostgreSQL 9.1 bajo esta cuenta.
Error similar persiste para la cuenta root .

Utilice el usuario del sistema operativo postgres para crear su base de datos, siempre que no haya configurado una función de base de datos con los privilegios necesarios que correspondan a su usuario del sistema operativo del mismo nombre ( h9uest en su caso):

 sudo -u postgres -i 

Como se recomienda aquí o aquí .

Vuelva a intentarlo. Escriba exit cuando termine de operar con el usuario del sistema postgres .

O ejecuta el único comando createuser como postgres con sudo , como lo demuestran los drees en otra respuesta.

El objective es utilizar el usuario del sistema operativo que coincida con la función de base de datos del mismo nombre para que se le otorgue acceso a través de la autenticación ident . postgres es el usuario del sistema operativo predeterminado que ha inicializado el clúster de la base de datos. El manual:

Para iniciar el sistema de base de datos, un sistema recién inicializado siempre contiene un rol predefinido. Este rol siempre es un “superusuario” y, de forma predeterminada (a menos que se modifique al ejecutar initdb ), tendrá el mismo nombre que el usuario del sistema operativo que inicializó el clúster de la base de datos. Habitualmente, este rol se llamará postgres . Para crear más roles, primero debe conectarse como este rol inicial.

He oído de configuraciones extrañas con nombres de usuario no estándar o donde el usuario del sistema operativo no existe. Necesitarás adaptar tu estrategia allí.

Lea sobre roles de base de datos y autenticación de cliente en el manual.

Después de probar muchas otras soluciones de personas, y sin éxito, esta respuesta finalmente me ayudó.

https://stackoverflow.com/a/16974197/2433309

En resumen, corriendo

 sudo -u postgres createuser owning_user 

crea un rol con el nombre owning_user (en este caso, h9uest). Después de eso, puede ejecutar rake db:create desde la terminal con el nombre de cuenta que configure sin tener que ingresar al entorno postgres.

 sudo su - postgres psql template1 

creando rol en pgsql con privilegio como “superusuario”

 CREATE ROLE username superuser; eg. CREATE ROLE demo superuser; 

Luego crea un usuario

 CREATE USER username; eg. CREATE USER demo; 

Asignar privilegios al usuario

 GRANT ROOT TO username; 

Y luego habilite el inicio de sesión de ese usuario, para que pueda ejecutar, por ejemplo: psql template1 , desde $ terminal normal:

 ALTER ROLE username WITH LOGIN; 

Instalar postgres usando apt-get no crea un rol de usuario o una base de datos.

Para crear un rol de superusuario y una base de datos para su cuenta de usuario personal:

sudo -u postgres createuser -s $(whoami); createdb $(whoami)

Esto funciona para mí:

 psql -h localhost -U postgres 

Método de trabajo,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer aquí cambian de igual a igual
  3. reiniciar, sudo service postgresql restart

  4. ahora intenta, psql -U postgres

En el indicador de usuario local, no en la solicitud del usuario raíz, escriba

 sudo -u postgres createuser  

Luego ingrese la contraseña para el usuario local.

Luego ingrese el comando anterior que generó “role ‘username’ no existe.”

Los pasos anteriores resolvieron el problema para mí. De lo contrario, envíe los mensajes de la terminal para los pasos anteriores.

Lo instalé en macOS y tuve que:

 cd /Applications/Postgres.app/Contents/Versions/9.5/bin createuser -U postgres -s YOURUSERNAME createdb YOURUSERNAME 

Aquí está la fuente: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641

Siga estos pasos y funcionará para usted:

  1. ejecutar msfconsole
  2. tipo db_console
  3. se le mostrará cierta información para que elija la información que le indica que haga: db_connect user:pass@host:port.../database siento, no lo recuerdo, pero es como este y luego reemplazo el usuario y la contraseña y el host y la base de datos con la información incluida en la database.yml /usr/share/metasploit-framework/config en el emplazamiento: /usr/share/metasploit-framework/config
  4. ya verás. reconstruyendo el caché del modelo en el fondo.
  5. Escriba apt-get update && apt-get upgrade después de la actualización reinicie la terminal y almuerce msfconsole y funciona, puede comprobar que al escribir en msfconsole: msf>db_status verá que está conectado.

Inicializar manualmente el DB inicial lo resolvió, en mi caso.

Ejecutar initdb hizo el truco para mí.

Por alguna razón, cuando instalé postgres, no se creó el “DB inicial”.

Para resolver el problema, esta es la solución proporcionada para la wiki de postgreSQL: primeros pasos .

initdb

Por lo general, la instalación de postgres en su sistema operativo crea una “base de datos inicial” e inicia el daemon del servidor postgres en ejecución. Si no, entonces necesitarás ejecutar initdb

Desinstalar todo y mantener Postgres.app:

 brew cask uninstall postgres brew uninstall postgres brew cask install postgres rm -rf /Applications/Postgres93.app/ # shutdown any postgres instance # open postgres.app -> "Initialize" 

Yo quería PostgreSQL 9.6