Estoy tratando de configurar Postgres por primera vez y necesito crear un usuario con permisos para leer y crear bases de datos. Sin embargo, cuando uso:
createuser username
en mi terminal recibo el siguiente mensaje:
createuser: no se pudo conectar a la base de datos postgres: FATAL: el rol "tom" no existe
Tom es mi cuenta de usuario de Ubuntu en la que he iniciado sesión en este momento. Estoy tratando de crear un nombre de usuario de "postgres" y luego hacerlo psql -U psql template1
para poder crear una base de datos y asignarle un propietario para mi aplicación Rails.
database
postgresql
Tom Maxwell
fuente
fuente
Respuestas:
Mencionaste Ubuntu, así que supongo que instalaste los paquetes PostgreSQL desde Ubuntu a través de apt.
Si es así, la
postgres
cuenta de usuario de PostgreSQL ya existe y está configurada para ser accesible mediantepeer
autenticación para sockets Unix enpg_hba.conf
. Se llega ejecutando comandos comopostgres
usuario de Unix, por ejemplo:Todo esto está en la documentación de Ubuntu PostgreSQL que es el primer éxito de Google para "Ubuntu PostgreSQL" y está cubierto en numerosas preguntas de Stack Overflow.
(Ha hecho que esta pregunta sea mucho más difícil de responder al omitir detalles como el sistema operativo y la versión en la que se encuentra, cómo instaló PostgreSQL, etc.)
fuente
pg_hba.conf
para usar lamd5
autenticación para ese usuario (consulte el manual); (b) Crear un usuario de SO con el mismo nombre y seguir usandopeer
auth; o (c) más avanzado, cree unapg_ident.conf
asignación para permitir que el usuario de su sistema operativo inicie sesión como el nuevo usuario.Vea git gist con instrucciones aquí
Ejecuta esto:
O
en tu terminal para entrar en postgres
postgres=#
correr
CREATE USER new_username;
Nota: Reemplace new_username con el usuario que desea crear, en su caso, será tom.
postgres=# CREATE USER new_username; CREATE ROLE
Dado que desea que ese usuario pueda crear una base de datos, debe modificar el rol a superusuario
postgres=# ALTER USER new_username SUPERUSER CREATEDB; ALTER ROLE
Para confirmar, todo fue exitoso,
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- new_username | Superuser, Create DB | {} postgres | Superuser, Create role, Create DB, Replication | {} root | Superuser, Create role, Create DB | {} postgres=#
Actualización / Modificación (para Mac):
Recientemente encontré un error similar en mi Mac:
psql: FATAL: role "postgres" does not exist
Esto se debió a que mi instalación se configuró con un superusuario de base de datos cuyo nombre de función es el mismo que su nombre de inicio de sesión (corto).
Pero algunos scripts de Linux asumen que el superusuario tiene el nombre de rol tradicional de
postgres
¿Cómo resolví esto?
Si instaló con
homebrew
ejecutar:/usr/local/opt/postgres/bin/createuser -s postgres
/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres
O:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username
O:
/usr/local/opt/postgresql@11/bin/createuser -s postgres
/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres
PD: reemplace 10.5 con su versión de PostgreSQL
fuente
psql -U postgres
esto debería ayudarlo, ya que esto sucederá si el administrador no ha creado una cuenta de usuario de PostgreSQL para usted. También podría ser que se le haya asignado un nombre de usuario de PostgreSQL que sea diferente al nombre de usuario de su sistema operativo, en ese caso necesita usar el modificador -U.
fuente
1- Inicie sesión como usuario de PostgreSQL predeterminado (postgres)
2- Como usuario de postgres. Agregue un nuevo usuario de base de datos usando el
createuser
comando[postgres]$ createuser --interactive
3 salidas
fuente
Su error está publicado en la documentación oficial. Puedes leer este artículo .
He copiado el motivo por usted (e hipervínculo las URL) de ese artículo:
Para sus propósitos, puede hacer:
1) Cree una cuenta de usuario de PostgreSQL:
(la
-P
opción para establecer una contraseña; la-d
opción para permitir la creación de una base de datos para su nombre de usuario 'tom'. Tenga en cuenta que 'tom' es el nombre de usuario de su sistema operativo. De esa manera, puede ejecutar comandos de PostgreSQL sinsudo
ing.)2) Ahora debería poder ejecutar
createdb
y otros comandos de PostgreSQL.fuente
Tuve el mismo problema, solo hago esto
sudo su - postgres
createuser odoo -U postgres -dRSP #P para contraseña ( odoo o nombre de usuario que desee o otorgue acceso a postgres)
fuente
En uso de Windows:
C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>
Agregue
--superuser
o--createdb
según corresponda.Consulte https://www.postgresql.org/docs/current/static/app-createuser.html para obtener más opciones.
fuente
Si no desea cambiar el método de autenticación (ident) y meterse con pg_hba.conf, use esto:
Primero inicie sesión como usuario predeterminado
luego acceda a psql y cree un usuario con el mismo nombre que el que está ingresando
postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;
puede verificar su usuario con los roles correspondientes con
postgres=# \du
Después de esto, puede crear su base de datos y verificarla con
fuente
Primero debe ejecutar initdb. Creará el clúster de la base de datos y la configuración inicial
Consulte ¿Cómo configurar postgresql por primera vez? y http://www.postgresql.org/docs/8.4/static/app-initdb.html
fuente
initdb
se hubiera ejecutado , no tendría un servidor de base de datos ejecutándose y aceptando conexiones para producir el mensaje de error informado. Elimine esta respuesta engañosa. (Por cierto, en el futuro, enlace a / docs / current / static / para evitar la acumulación de enlaces obsoletos)