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 createdb
, no puedo createuser
; todas las operaciones devuelven el mensaje de error
Fatal: role h9uest does not exist
h9uest
es mi nombre de cuenta y tengo sudo apt-get install
PostgreSQL 9.1 en esta cuenta.
Persiste un error similar para la root
cuenta.
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 ( h9uest
en su caso):
sudo -u postgres -i
Como se recomienda aquí o aquí .
Vuelva a intentarlo. Escriba exit
cuando haya terminado de operar como usuario del sistema postgres
.
O ejecute el comando único createuser
como postgres
con 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 ident
autenticación . postgres
es 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.
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:create
desde la terminal con cualquier nombre de cuenta que haya configurado sin tener que ingresar al entorno de Postgres.
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 template1
desde la terminal normal $
:
ALTER ROLE username WITH LOGIN;