lunes, 12 de marzo de 2012

PostgreSQL: Login como usuario de una BD

Lo típico de PostgreSQL es entrar a través de la consola con el cliente psql lo que hacemos de la siguiente forma:

usuario@maquina:~$ sudo su - postgres
postgres@maquina:~$ psql
psql (9.1.3)
Type "help" for help.

postgres=>

El problema viene cuando queremos acceder a otra db diferente de 'postres' i con un usuario diferente de 'postgres'... lo hariamos así:

usuario@maquina:~$ psql -d nombreBD -U usuario
psql: FATAL:  Peer authentication failed for user "usuario"

ZASCA!!! ya tenemos el fallo...
Para arreglar este fallo debemos editar el archivo /etc/postgresql/9.1/main/pg_hba.conf

Hacemos:

usuario@maquina:~$ sudo gedit /etc/postgresql/9.1/main/pg_hba.conf

Cambiamos la linea donde pone:
local                        all                        all                                 peer
por:
local                        all                        all                                 md5
También podemos poner (solución ofrecida por G. Ráez Zafra):
local                        all                        all                                 password

Reiniciamos el servicio haciendo:

usuario@maquina:~$ sudo su - postgres
postgres@maquina:~$ /etc/init.d/postgresql restart


Ahora ya lo tenemos... Hacemos:


usuario@maquina:~$ psql -d nombreBD -U usuario
Password for user usuario:
psql (9.1.3)
Type "help" for help.

nombreDB=>

Otra solución (esta ofrecida por L. M. Facerias Peralvo) si no quereis editar els archivo /etc/postgresql/9.1/main/pg_hba.conf és entrar con el siguiente comando:

usuario@maquina:~$ psql -U super -h localhost rural