usuario una postgres pg_hba para línea inactivo hay fatal falló existe datos conf autentificación postgresql psql

postgresql - una - psql fatal la autentificación peer falló para el usuario postgres



psql: FATAL: la base de datos “<usuario>” no existe (17)

Estoy usando la aplicación PostgreSql para mac ( http://postgresapp.com/ ). Lo he usado en otras máquinas en el pasado, pero me está dando algunos problemas al instalar en mi macbook. He instalado la aplicación y corrí:

psql -h localhost

Vuelve:

psql: FATAL: database "<user>" does not exist

Parece que ni siquiera puedo ejecutar la consola para crear la base de datos que está intentando encontrar. Lo mismo sucede cuando acabo de ejecutar:

psql

o si ejecuto psql desde el menú desplegable de la aplicación:

Estadísticas de la máquina:

  • OSX 10.8.4

  • psql (PostgreSQL) 9.2.4

Cualquier ayuda es apreciada.

También intenté instalar PostgreSql a través de homebrew y obtengo el mismo problema. También he leído la página de documentación de las aplicaciones que dice:

Cuando Postgres.app se inicia por primera vez, crea la base de datos $ USER, que es la base de datos predeterminada para psql cuando no se especifica ninguna. El usuario predeterminado es $ USUARIO, sin contraseña.

Por lo tanto, parece que la aplicación no está creando $ USER, sin embargo, he instalado-> desinstalé-reinstalé varias veces ahora, por lo que debe ser algo con mi máquina.

Encontré la respuesta, pero no estoy seguro de cómo funciona exactamente como el usuario que respondió en este hilo -> Cómo ejecutar Postgresql en Mac: la base de datos "postgres" no existe . Usé el siguiente comando para hacer que psql se abra:

psql -d template1

Dejaré este sin respuesta hasta que alguien pueda dar una explicación de por qué funciona esto.


  1. Inicie sesión como usuario predeterminado: sudo -i -u postgres
  2. Crear nuevo usuario: createuser --interactive
  3. Cuando se le solicite el nombre del rol, ingrese el nombre de usuario de linux y seleccione Sí para la pregunta del superusuario.
  4. Aún con la sesión iniciada como usuario de postgres, cree una base de datos: createdb <username_from_step_3>
  5. Confirme que los errores desaparecieron al ingresar: psql en el símbolo del sistema.
  6. La salida debe mostrar psql (xxx) Type "help" for help.

Como dice la documentación createdb :

La primera base de datos siempre es creada por el comando initdb cuando se inicializa el área de almacenamiento de datos ... Esta base de datos se llama postgres.

Entonces, si ciertas distribuciones de SO / postgresql lo hacen de manera diferente, ciertamente no es el estándar / predeterminado (solo se verificó que initdb en openSUSE 13.1 crea el DB "postgres", pero no "<user>"). En pocas palabras, se espera que se use psql -d postgres cuando se use un usuario que no sea "postgres".

Obviamente, la respuesta aceptada, ejecutar createdb para crear una base de datos llamada como el usuario, también funciona, pero crea una base de datos superflua.


Como esta pregunta es la primera en los resultados de búsqueda, pondré aquí una solución diferente para un problema diferente de todos modos, para no tener un título duplicado.

El mismo mensaje de error puede aparecer cuando se ejecuta un archivo de consulta en psql sin especificar una base de datos. Como no hay una declaración de use en postgresql, tenemos que especificar la base de datos en la línea de comandos, por ejemplo:

psql -d db_name -f query_file.sql


Desde el terminal, simplemente ejecute el comando en la ventana del símbolo del sistema. (No dentro de psql) .

createdb <user>

Y luego tratar de ejecutar postgres de nuevo.


En primer lugar, es útil crear una base de datos con el mismo nombre que su uso actual, para evitar el error cuando solo quiere usar la base de datos predeterminada y crear nuevas tablas sin declarar explícitamente el nombre de una db.

Reemplace "skynotify" con su nombre de usuario:

psql -d postgres -c "CREATE DATABASE skynotify ENCODING ''UTF-8'';"

-d declara explícitamente qué base de datos usar como predeterminado para las sentencias de SQL que no incluyen explícitamente un nombre de db durante esta sesión interactiva.

FUNDAMENTOS PARA OBTENER UNA IMAGEN CLARA DE LO QUE TIENE SU SERVIDOR PostgresQL.

Debe conectarse a una base de datos existente para usar psql de forma interactiva. Afortunadamente, puede solicitar a psql una lista de bases de datos:

psql -l

.

List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------------------------+-----------+----------+-------------+-------------+------------------- skynotify | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | myapp_dev | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | ruby-getting-started_development | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify + | | | | | skynotify=CTc/skynotify template1 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify + | | | | | skynotify=CTc/skynotify (6 rows)

Esto NO inicia la consola interactiva, solo genera una tabla basada en texto para el terminal.

Como dice otra respuesta, postgres siempre se crea, por lo que debe usarla como su base de datos a prueba de fallas cuando solo quiere que la consola comience a trabajar en otras bases de datos. Si no está allí, enumere las bases de datos y luego use cualquiera de ellas.

De manera similar, seleccione tablas de una base de datos:

psql -d postgres -c "/dt;"

Mi base de datos "postgres" no tiene tablas, pero cualquier base de datos que lo haga generará una tabla basada en texto en el terminal (salida estándar).

Y para completar, también podemos seleccionar todas las filas de una tabla:

psql -d ruby-getting-started_development -c "SELECT * FROM widgets;"

.

id | name | description | stock | created_at | updated_at ----+------+-------------+-------+------------+------------ (0 rows)

Incluso si hay cero filas devueltas, obtendrás los nombres de los campos.

Si sus tablas tienen más de una docena de filas, o no está seguro, será más útil comenzar con un recuento de filas para comprender la cantidad de datos en su base de datos:

psql -d ruby-getting-started_development -c "SELECT count(*) FROM widgets;"

.

count ------- 0 (1 row)

Y no confunda en que "1 fila" lo confunda, solo representa cuántas filas devuelve la consulta, pero la fila 1 contiene el recuento que desea, que es 0 en este ejemplo.

NOTA: una db creada sin un propietario definido será propiedad del usuario actual.


En su explicación más simple; Es un problema de noob. Solo escribiendo

pgres

resultará en esta respuesta.

pgres <db_name>

tendrá éxito sin error si el usuario tiene los permisos para acceder a la base de datos.

Uno puede entrar en los detalles de las variables de entorno exportadas pero eso no es necesario ... esto es demasiado básico para fallar por cualquier otra razón.


Este error también puede ocurrir si la variable de entorno PGDATABASE se establece en el nombre de una base de datos que no existe.

En OSX, vi el siguiente error al intentar iniciar psql desde el menú de Postgress.app:

psql: FATAL: database "otherdb" does not exist

La solución al error fue eliminar la export PGDATABASE=otherdb de ~/.bash_profile :

Además, si PGUSER está configurado con un nombre distinto a su nombre de usuario, ocurrirá el siguiente error:

psql: FATAL: role "note" does not exist

La solución es eliminar export PGUSER=notme de ~/.bash_profile .


Inicie sesión con la base de datos predeterminada de la plantilla 1:

#psql -d template1 #template1=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+---------+----------+-------------+-------------+--------------------- postgres | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca + | | | | | gogasca=CTc/gogasca template1 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca + | | | | | gogasca=CTc/gogasca (3 rows)

Crea una base de datos con tu ID de usuario:

template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING ''UTF8''; CREATE DATABASE

Salir y luego volver a iniciar sesión

template1=# /q gonzo:~ gogasca$ psql -h localhost psql (9.4.0) Type "help" for help. gogasca=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+---------+----------+-------------+-------------+--------------------- gogasca | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca + | | | | | gogasca=CTc/gogasca template1 | gogasca | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca + | | | | | gogasca=CTc/gogasca (4 rows)


Me encontré con el mismo error cuando intentaba abrir postgresql en mac

psql: FATAL: database "user" does not exist

Encontré este simple comando para resolverlo:

Método 1

$ createdb --owner=postgres --encoding=utf8 user

y escriba

psql

Método 2:

psql -d postgres


Parece que su administrador de paquetes no pudo crear la base de datos llamada $ usuario para usted. La razón que

psql -d template1

El trabajo para usted es que template1 es una base de datos creada por Postgres y está presente en todas las instalaciones. Aparentemente, puede iniciar sesión en template1, por lo que debe tener algunos derechos asignados por la base de datos. Intente esto en un indicador de shell:

createdb

y luego ver si puede iniciar sesión de nuevo con

psql -h localhost

Esto simplemente creará una base de datos para su usuario de inicio de sesión, que creo que es lo que está buscando. Si createdb falla, entonces no tiene suficientes derechos para crear su propia base de datos, y tendrá que averiguar cómo arreglar el paquete homebrew.


Por defecto, Postgres intenta conectarse a una base de datos con el mismo nombre que su usuario. Para evitar este comportamiento predeterminado, solo especifique usuario y base de datos:

psql -U Username DatabaseName


Probé algunas de estas soluciones, pero no funcionaron del todo (¡aunque estaban en el camino correcto!)

Al final mi error fue:

FATAL: la autenticación de contraseña falló para el usuario

cuando ejecuté el siguiente comando: psql

Entonces ejecuté estos dos comandos:

dropdb() createdb()

NOTA: esto eliminará la db, pero no la necesité y por alguna razón ya no pude acceder a pqsl, así que la eliminé y la recreé. Entonces psql trabajó de nuevo.


Si recibe este error al implementar un proyecto de Rails con Capistrano, es posible que desee crear una base de datos en su servidor remoto.

Inicia sesión en tu Ubuntu y ejecuta:

sudo -u postgres psql

Introduzca su contraseña de usuario postgres si se le solicita. Ahora crea tu base de datos ingresando:

CREATE DATABASE dbname_production;

El nombre debe ser el que especificó en shared/config/database.yml en su servidor de producción.

Salir ingresando /q


Tenía el mismo problema, un simple psql -d postgres hizo (Escriba el comando en el terminal)


Todavía tenía el problema anterior después de instalar postgresql usando homebrew - Lo resolví poniendo / usr / local / bin en mi camino antes de / usr / bin


Tuvo este problema al instalar postgresql a través de homebrew.

Tenía que crear el superusuario predeterminado "postgres" con:

createuser --interactive postgres responde y para superusuario

createuser - usuario interactivo responde y para superusuario


tuvo el problema con el uso del controlador JDBC, por lo que solo tiene que agregar la base de datos (tal vez de forma redundante, dependiendo de la herramienta que pueda usar) después del nombre del host en la URL, por ejemplo, jdbc:postgres://<host(:port)>/<db-name>

más detalles se documentan aquí: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT