¿El usuario de Postgres no existe?

92

Acabo de instalar Postgres y he estado jugando con él y con varias configuraciones durante 1-2 horas.

Estoy atascado al no poder cambiar al usuario de postgres

$ su - postgres produce el siguiente error: su: unknown login: postgres

$ sudo -u postgres psql produce el siguiente error: sudo: unknown user: postgres

Estos intentos se realizan como usuario normal. Probarlos como root tiene exactamente los mismos resultados. He instalado Postgres a través de Homebrew en OS X, y he leído las instrucciones varias veces.

krystah
fuente
¿Estás intentando ejecutar psql?
danielM
Bueno, sí, quiero ejecutar como el postgresusuario adecuado .
krystah
En algunas versiones de Mac OS X, con algunos métodos de instalación, creo que el usuario se crea como en su postgres_lugar. Tenga en cuenta el subrayado final. Además, ¿está seguro de que usted (o el instalador) realmente creó la instancia de PostgreSQL e inició la base de datos?
Craig Ringer
1
No pude cambiar de postgresusuario. Resolvió el problema después de instalar el postgresql-serverpaquete.
sergio 郝海东 冠状 病 六四 事件 法轮功

Respuestas:

89

psql: Inicia sesión con mi nombre de usuario predeterminado

psql -U postgres: Me registra como usuario de postgres

Sudo no parece ser necesario para mí.

Utilizo Postgres.app para mi base de datos postgres de OS X. Eliminó el dolor de cabeza de asegurarse de que la instalación funcionara y el servidor de base de datos se iniciara correctamente. Compruébalo aquí: http://postgresapp.com

Editar: crédito a @Erwin Brandstetter por corregir mi uso de los argumentos.

danielM
fuente
8
Lo instalé usando Brew y no creó un usuario llamado postgres o _postgres (por lo que puedo ver), así que esto me falló. La solución @kangkyu explica y lo guía a través de los problemas, suponiendo que no tenga un usuario de postgres en ese momento: psql postgresy psql -d postgres.
notapatch
21

Por psql --help, cuando no configuró opciones para el nombre de la base de datos (sin -dopción), sería su nombre de usuario, si no lo hizo -U, el nombre de usuario de la base de datos también sería su nombre de usuario, etc.

Pero por initdbel comando (para crear la primera base de datos) no tiene su nombre de usuario como cualquier nombre de base de datos. Tiene una base de datos llamada postgres. La primera base de datos siempre la crea el comando initdb cuando se inicializa el área de almacenamiento de datos. Esta base de datos se llama postgres.

Entonces, si no tiene otra base de datos llamada su nombre de usuario, debe hacerlo psql -d postgrespara que el comando psql funcione. Y parece que da -dopción por defecto, psql postgrestambién funciona.

Si ha creado otro nombre de base de datos igual al de su nombre de usuario, (debe hacerlo createdb), entonces psqlsolo puede ordenar . Y parece que el primer nombre de usuario de la base de datos se establece como el nombre de usuario de su máquina por brebaje.

psql -d <first database name> -U <first database user name>

o,

psql -d postgres -U <your machine username>
psql -d postgres

funcionaría por defecto.

kangkyu
fuente
17

OS X tiende a prefijar los nombres de las cuentas del sistema con "_"; no dice qué versión de OS X está utilizando, pero al menos en 10.8 y 10.9 el usuario _postgres existe en una instalación predeterminada. Tenga en cuenta que no podrá acceder sua esta cuenta (excepto como root), ya que no tiene contraseña. sudo -u _postgres, por otro lado, debería funcionar bien.

Gordon Davisson
fuente
¡Gracias! Esta es la respuesta que estaba buscando. ¿Hay algo que pueda hacer para cambiar el nombre del usuario a "postgres"? Iniciar sesión como ese usuario _postgres lleva a psql a quejarse de que el usuario "_postgres" no existe. Estoy tratando de restaurar una instancia limpia de postgres con un archivo de respaldo de otra base de datos
Chris Reyes - he-him
1
@ChrisReyes Cambiar el nombre de las cuentas del sistema puede dañar los componentes del sistema que las usan, por lo que recomiendo encarecidamente que no lo haga. Puede crear otra cuenta de usuario con el nombre "postgres" y usarla, pero si lo entiendo bien (lo cual es posible que no), lo que se está encontrando es que la cuenta de usuario dentro de la base de datos de postgres no se llama _postgres. AIUI, los nombres de las cuentas dentro de la base de datos están separados de los nombres de las cuentas del sistema, por lo que no debería haber problemas para ejecutar una instancia de base de datos en la cuenta del sistema "_postgres" y abrir esa base de datos con la cuenta de la base de datos "postgres".
Gordon Davisson
4
psql -U postgres

Funcionó bien para mí en el caso de nombre de base de datos: postgres y nombre de usuario: postgres. Entonces no es necesario escribir sudo.

Y en el caso de otro db, puede intentar

psql -U yourdb postgres

Como se proporciona en la ayuda de Postgres:

psql [OPTION]... [DBNAME [USERNAME]]
mora
fuente
Mi caso: $ psql -U postgresgenera salida psql: FATAL: role "postgres" does not exist, pero psql postgresfunciona.
Frozen Flame
4

Recibo exactamente los mismos errores que kryshah con su - postgresysudo -u postgres psql . La respuesta de DanielM también da errores.

Salidas cuando la configuración es incorrecta

Sin embargo, responda del comentario de przbabu.

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

Creo que parte de este problema puede estar en la configuración del propietario en OSX

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

pero hacer sudo chown -R postgres:staff /Users/postgresdachown: invalid user: ‘postgres:staff’ .

En resumen, esta no es la solución al problema. Utilice las herramientas proporcionadas por la instalación de postgres para crear un usuario y una base de datos.

Para obtener la configuración y los resultados correctos

Hay comandos específicos después de la instalación de Postgres para agregar un nuevo usuario al sistema de base de datos. Después de initdb, ejecute lo siguiente como se describe aquí

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

Para evitar la solicitud de contraseña todo el tiempo, tiene tres opciones como se describe aquí .

Léo Léopold Hertz 준영
fuente
2

Para mí esta fue la solución en macOS Vuelva a instalar el psql

brew install postgres

Inicie el servidor PostgreSQL

pg_ctl -D /usr/local/var/postgres start

Inicializar DB

initdb /usr/local/var/postgres

Si este comando arroja un error, rm el archivo de base de datos anterior y vuelva a ejecutar el comando anterior

rm -r /usr/local/var/postgres

Crea una nueva base de datos

createdb postgres_test
psql -W postegres_test

Iniciará sesión en esta base de datos y puede crear un usuario aquí para iniciar sesión

Adnan Fayaz
fuente
0

La solución es simple:
inicie sesión como root
y después:

su - postgres

psql
el fusor
fuente