Instalación y configuración de PostgreSQL, phpPgAdmin y pgAdmin

Esta guía documenta los pasos necesarios para poner en funcionamiento uno de los motores de base de datos open source más importantes: PostgreSQL.

Además se abarcan los pasos para instalar y configurar las dos principales herramientas que permiten gestionar PostgreSQL, phpPgAdmin y pgAdmin, incluida la adecuada configuración del cortafuegos para que los servicios puedan estar disponibles remotamente.


Instalación y configuración de PostgreSQL

A continuación se verán los pasos para instalar y configurar de forma básica el motor de base de datos PostgreSQL:
  1. Para comenzar tenemos que instalar el motor de base de datos si aún no lo tenemos instalado:
    testsrv:~ # zypper install postgresql-server
  2. Arrancamos el servicio por primera vez para que se generen los directorios y archivos de configuración por defecto de la herramienta:
    testsrv:~ # service postgresql start
  3. Si queremos permitir que puedan acceder remotamente al servicio tenemos que realizar una configuración para que el motor atienda las peticiones de todas las interfaces de red del servidor (o solo algunas de ellas). Para ello editamos el archivo postgresql.conf ubicado en el directorio /var/lib/pgsql/data:
    testsrv:~ # vi /var/lib/pgsql/data/postgresql.conf
    Y luego buscamos la directiva #listen_addresses, la comentamos o modificamos debiendo quedar similar a lo que sigue:
    #listen_addresses = 'localhost'
    listen_addresses = '*'
  4. Luego toca autorizar las redes a las que le permitiremos el acceso remoto. Pasamos a editar el archivo pg_hba.conf ubicado en el directorio /var/lib/pgsql/data como se muestra a continuación:
    testsrv:~ # vi /var/lib/pgsql/data/pg_hba.conf
    Buscamos la siguiente sección, reemplazamos el método de autenticación ident a md5 y le agregamos la directiva necesario para permitir el acceso a los equipos ubicados en nuestra red (en este caso 192.168.1.0/24), y si no usamos IPv6 podemos comentar la última línea.
    # TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
    # "local" is for Unix domain socket connections only

    local all all md5
    # IPv4 local connections:
    host all all 127.0.0.1/32 md5
    host all all 192.168.1.0/24 md5
    # IPv6 local connections:
    #host all all ::1/128 ident

  5. El siguiente paso consiste en cambiar la contraseña del administrador del motor de base de datos postgres, para lo cual nos conectamos a la consola sql de Postgres,
    testsrv:~ # su postgres -c psql postgres
    Cambiamos la contraseña y salimos de la consola ejecutando la siguiente secuencia de comandos:
    postgres=# alter user postgres with password 'mi_contraseña';
    postgres=# \q
  6. Finalmente agregamos el servicio a los niveles de ejecución (ahora llamados targets) y reiniciamos el servicio de la siguiente manera:
    testsrv:~ # chkconfig --add postgresql
    testsrv:~ # service postgresql restart



Instalación de phpPgAdmin y pgAdmin

En esta sección se abarcarán los pasos para instalar las dos herramientas más importantes que permiten la gestión del motor de base de datos PostgreSQL: phpPgAdmin y pgAdmin, que serán tratadas a continuación en esa misma secuencia.

Instalación y configuración de phpPgAdmin

  1. Para que funcione phpPgAdmin primeramente necesitamos instalar los siguientes paquetes:
    testsrv:~ # zypper install apache2 apache2-mod_php5 php5 php5-pgsql php5-mbstring mcrypt php5-mcrypt
  2. Obtenemos la herramienta descargándola desde su sitio web, para luego descomprimirla en el directorio /srv/www/htdocs y asignarle los permisos correspondientes como se aprecia en la siguiente secuencia de comandos:
    testsrv:~ # cd /srv/www/htdocs/
    testsrv:/srv/www/htdocs # wget http://downloads.sourceforge.net/phppgadmin/phpPgAdmin-5.0.4.tar.gz?download -O phpPgAdmin-5.0.4.tar.gz
    testsrv:/srv/www/htdocs # tar -xzf phpPgAdmin-5.0.4.tar.gz
    testsrv:/srv/www/htdocs # mv phpPgAdmin-5.0.4 phpPgAdmin
    testsrv:/srv/www/htdocs # rm phpPgAdmin-5.0.4.tar.gz
    testsrv:/srv/www/htdocs # chmod -Rf 755 phpPgAdmin
    testsrv:/srv/www/htdocs # chown -Rf wwwrun:www phpPgAdmin

  3. Luego pasamos a editar el archivo de configuración config.inc.php ubicado en el directorio /srv/www/htdocs/phpPgAdmin/conf,
    testsrv:~ # vi /srv/www/htdocs/phpPgAdmin/conf/config.inc.php
    y verificamos la configuración de las siguientes directivas cuyo contenido debería ser similar a lo sigue:
    // Configuración del servidor y puerto:
    $conf['servers'][0]['host'] = 'localhost';
    $conf['servers'][0]['port'] = 5432;

    // Si queremos permitir el acceso con el usuario administrador
    // (postgres) la siguiente directiva debe ser igual a false:

    $conf['extra_login_security'] = false;
    Guardamos los cambios y salimos del archivo de configuración para continuar con el siguiente paso.

  4. A continuación verificamos que el servidor Apache tenga activado el soporte php en la directiva APACHE_MODULES del archivo /etc/sysconfig/apache2, y si no lo está lo incluimos:
    testsrv:~ # vi /etc/sysconfig/apache2
    APACHE_MODULES="actions alias ... ssl userdir php5"
  5. Luego especificamos los niveles de ejecución del servicio Apache y lo iniciamos:
    testsrv:~ # chkconfig --add apache2
    testsrv:~ # service apache2 start

    Con estos últimos pasos concluimos con la puesta en marcha de Apache, lo que nos permitirá acceder localmente a phpPgAdmin mediante la siguiente URL:
    http://localhost/phpPgAdmin
  6. A continuación les dejo con algunas capturas de pantalla de phpPgAdmin:


Instalación y configuración de pgAdmin

La mejor forma de instalar pgAdmin es mediante el método de 1-Clic Install desde la siguiente URL:
http://software.opensuse.org/package/pgadmin3
A continuación van algunas capturas de pantalla de pgAdmin3 en ejecución:




Habilitación de puertos en el cortafuegos

Si necesitamos acceder a los servicios de PostgreSQL y Apache (para acceder a phpPgAdmin) remotamente y no solo trabajar en forma local, necesitamos habilitar los puerto correspondiente en el cortafuegos de openSUSE que se puede hacer fácilmente a través de la línea de comandos como se explicará a continuación.
  1. Editamos el archivo /etc/sysconfig/SuSEfirewall2:
    testsrv:/etc # cd /etc/sysconfig/
    testsrv:/etc/sysconfig # vi SuSEfirewall2

  2. Luego buscamos la directiva FW_CONFIGURATIONS_EXT a la cual le agregamos los nombres de los servicios postgresql y apache2 debiendo quedar similar a lo que sigue:
    FW_CONFIGURATIONS_EXT="postgresql apache2 sshd"
    Guardamos los cambios y salimos del editor.

  3. Finalmente procedemos a reiniciar el servicio del firewall de openSUSE con el siguiente comando:
    testsrv:/etc/sysconfig # rcSuSEfirewall2 restart
  4. Con estos tres pasos anteriores hemos habilitado los puertos deseados en el cortafuego, con lo cual hemos culminado.


Enlaces externos

Comentarios

  1. y como ingreso?? no me deja loguearme con el usuario "postgres"

    ResponderEliminar
    Respuestas
    1. Anónimo dijo...Una vez desinstalada la aplicación Postgres (instalar o desinstalar en Panel de Control) y no recuerdas tu clave o usuario, debes irte al explorador de windows y eliminar todas las carpetas relacionadas con Postgres

      Espero que soluciones el problema
      Hasta luego

      Eliminar
  2. el problema lo tengo cuando me quiero loguear desde otra pc dentro de la misma red.

    tambien lo tengo el el servidor opensuse cuando quiro conectarme con pgadmin3 y uso localhost como "Host" por que cuando uso ip "127.0.0.1" me logueo de manera correcta

    saben a que pueda deberse?

    ResponderEliminar
    Respuestas
    1. Hola, si tu problema está con el acceso desde un equipo remoto lo que tenés que tener en cuenta es que la directiva listen_addresses esté bien configurada, autorizar la red en el archivo /var/lib/pgsql/data/pg_hba.conf y habilitar el puerto de postgresql en el firewall, con eso debería funcionar.

      Con respecto a que no te funciona con el nombre de equipo localhost esto probablemente se deba a que en el archivo /etc/hosts no se encuentra debidamente asociado dicho nombre a la dirección 127.0.0.1, probablemente haya algo con IPv6 o algo así..

      Saludos...

      Eliminar
  3. Hasta ahora no he encontrado una nueva herramienta genial para trabajar con PostgreSQL - Valentina Studio. Su edición gratuita puede hacer las cosas más de las muchas herramientas comerciales!
    ¡Muy recomendable comprobarlo. http://www.valentina-db.com/en/valentina-studio-overview

    ResponderEliminar
  4. no me deja loguearme con el usuario "postgres" cuando ingreso http://localhost/phpPgAdmin

    ResponderEliminar
    Respuestas
    1. Hola Alexander, si con otros usuarios te permite loguear entonces quizás deberías comprobar que la siguiente directiva esté bien configurada:

      $conf['extra_login_security'] = false;

      Si con ningún usuario te podes conectar ya no se, quizás sea el problema de la versión de PostgreSQL y la versión de la librería postgres de PHP.

      Eliminar
  5. Hola... Te quería molestar con una duda, sucede que tengo instalado phpPgAdmin en Centos y cuando accedo desde cualquier equipo, me basta con poner el username y la clave que sea, da lo mismo cual, y entra directo sin mayores validaciones. ¿Cómo hago para que permita el acceso con la contraseña correcta que tiene el usuario y no con cualquiera?. Gracias.

    saludos!


    ResponderEliminar
    Respuestas
    1. Hola Anónimo, antes que nada gracias por comentar, lo que mencionas es muy raro para una configuración por defecto, quizás deberías verificar la configuración del archivo /var/lib/pgsql/data/pg_hba.conf, reemplazando cualquier directiva trust por md5.

      Saludos!

      Eliminar
    2. Hola gracias por tu respuesta. Mira, lo que sucede es que el archivo pg_hba.conf determina los accesos a la base de datos, pero desde un gestor de base de datos. Para el caso del phpPgAdmin, puedes conectar por puerto 80 desde cualquier parte y la restricción en pg_hba.conf no le afecta. Ya había probado haciendo el cambio que me señalas y también trato de revisar el código de postgresql.conf y config.inc.php sin mayores resultados hasta ahora. Extrañamente sólo se preocupa que el usuario exista y mientras esa condición se dé, puedes entrar poniendo cualquier cosa como clave.

      ¿Alguna orientación respecto de donde buscar?. Gracias.

      Saludos,

      Alejandro.

      Eliminar
    3. Hola Anónimo, el archivo pg_hba.conf tiene mucho que ver, lo que haces a través del puerto 80 es conectarte al Apache y éste ejecuta el código php que se conecta a la base de datos de forma local...

      Osea, php se conectará al puerto 5432 de PostgreSQL desde la ip 127.0.0.1 (localhost), y ahí entra en juego la configuración que tengas en el archivo pg_hba.conf para dicha ip:

      # IPv4 local connections:
      host all all 127.0.0.1/32 md5


      Saludos!!

      Eliminar
  6. Buen manual, gracias me sirvio.


    Saludos

    amoxto

    ResponderEliminar

Publicar un comentario