Blog Entry

Configurando PostgreSQL en RHEL5

martes, septiembre 09, 2008 by , under , , ,

Introduccion

RedHat 5 tiene trae postgresql-8.1.11.
El software esta fragmentado en varios paquetes: Cliente y servidor. Necesitamos ambos.
Para instalar PostgreSQL en RHEL5 podemos usar el comando:
yum install postgresql postgresql-server
El manual de PostgreSQL esta aqui. La seccion III de este manual habla de la instalacion (Que ya adelantamos al instalar los paquetes)

RPM, al instalar los pauqetes de PostgreSQL, tambien crea el usuario postgres. Segun el manual, el directorio $HOME de este usuario deberia estar en /usr/local/pgsql/data, pero en RHEL 5 se encuentra en /var/lib/pgsql. No se necesita correr initdb para incializar el cluster de la base de datos por que tambien RPM ya lo ha hecho por nosotros. Esto impli

Modificacion de metodos de autenticacion.

Despues de algunas horas de frustrante desesperacion al fallar la autenticacion con otro usuario que no sea postgres, encuentro que este es un error muy comun en las instalaciones de RedHat. Para poder conectarte con el servidor PostgreSQL, debes de tener una cuenta en el sistema con el mismo nombre de la cuenta del servidor PostgreSQL. El ejemplo es claro:
Nombre unix: postgres
Nombre postgresql: postgres

Esto plantea problemas para servidores de web/scripts que funcionan con una pletora de diferentes usuarios. La solucion mas sencilla que encontre a la vuelta de google esta en este foro. Tomando en cuenta estos consejos, modificare el archivo: /var/lib/pgsql/data/pg_hba.conf. Este es un extracto del original.

# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 ident sameuser
# IPv6 local connections:
host all all ::1/128 ident sameuser

Modificare la linea correspondiente a las conecciones hechas en IPV4 (TCP/IP) de la siguiente manera:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 ident sameuser

Con esto, se instruye a PostgreSQL que use el mecanismo de autenticacion usuario/password para aquellos que se conectan por TCP/IP (IPV4 Solamente).
Aun no hablemos de seguridad por favor, asi que reinicio el servidor.

# /sbin/service postgresql status

Creando un usuario y su base de datos.

El siguiente paso es crear una usuario y una base de datos para que este la pueda usar. He aqui la lista de comandos. El nombre de usuario sera: tzicatl. El nombre de la base de datos sera: pruebadb.

# su - postgres
$ createuser --no-superuser --no-createdb --no-createrole --login --pwprompt --echo
$ createdb --owner tzicatl pruebadb 'Base de datos de Prueba'

Por ultimo, para probar que funciona, en otra terminal con otra cuenta, intentamos esto:

$ psql -h localhost -U svsuser -W -d svsdb

Si todo sale bien, veremos el prompt de pgsql.

Hasta aqui termina mi breve nota de hoy.

0 Responses to 'Configurando PostgreSQL en RHEL5'