Error de PostgreSQL: fatal: el rol "nombre de usuario" no existe

Resuelto h9uest asked hace 12 años • 19 respuestas

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

Fatal: role h9uest does not exist

h9uestes mi nombre de cuenta y tengo sudo apt-get installPostgreSQL 9.1 en esta cuenta.
Persiste un error similar para la rootcuenta.

h9uest avatar Aug 12 '12 10:08 h9uest
Aceptado

Utilice el usuario del sistema operativo postgres para crear su base de datos, siempre y cuando no haya configurado una función de base de datos con los privilegios necesarios que corresponda al usuario del mismo nombre de su sistema operativo ( h9uesten su caso):

sudo -u postgres -i

Como se recomienda aquí o aquí .

Vuelva a intentarlo. Escriba exitcuando haya terminado de operar como usuario del sistema postgres.

O ejecute el comando único createusercomo postgrescon sudo, como lo demostró dsrees en otra respuesta.

El objetivo es utilizar el usuario del sistema operativo que coincida con la función de base de datos del mismo nombre para que se le conceda acceso mediante identautenticación . postgreses el usuario predeterminado del sistema operativo que ha inicializado el clúster de base de datos. El manual:

Para iniciar el sistema de base de datos, un sistema recién inicializado siempre contiene una función predefinida. Este rol es siempre 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 base de datos. Habitualmente, este rol se denominará postgres. Para crear más roles, primero debes conectarte como este rol inicial.

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

Lea sobre las funciones de la base de datos y la autenticación de clientes en el manual.

Erwin Brandstetter avatar Aug 12 '2012 04:08 Erwin Brandstetter

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

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

En resumen, correr

sudo -u postgres createuser owning_user

crea un rol con el nombre propietario_usuario (en este caso, h9uest). Después de eso, puede ejecutar rake db:createdesde la terminal con cualquier nombre de cuenta que haya configurado sin tener que ingresar al entorno de Postgres.

dsrees avatar Sep 09 '2013 23:09 dsrees
sudo su - postgres

psql template1

creando rol en pgsql con privilegio de "superusuario"

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

Luego crea 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 template1desde la terminal normal $:

ALTER ROLE username WITH LOGIN;
Mohammed Saleem avatar May 29 '2014 13:05 Mohammed Saleem