Cómo instalar phpPgAdmin en Debian 9 Stretch

En esta ocasión veremos cómo instalar phpPgAdmin en Debian 9 Stretch paso a paso, de modo que podamos administrar el sistema de bases de datos PostgreSQL de nuestro servidor o VPS Debian remotamente desde cualquier dispositivo conectado a red que cuente con un navegador.

Antes de instalar phpPgAdmin en Debian 9 Stretch

Para poder completar con éxito esta guía de instalación de phpPgAdmin en Debian 9 Stretch es importante que satisfagas estos requerimientos básicos:

Si aún no dispones del entorno, puedes echar un vistazo a la guía de instalación de PostgreSQL en Debian 9 Stretch. Además, es importante que el servidor web ofrezca acceso seguro mediante HTTPS, puede que te interese echar también un vistazo a la guía de instalación de Apache en Debian 9 Stretch.

Cómo descargar phpPgAdmin en Debian 9 Stretch

Vamos a descargar phpPgAdmin para Debian 9 Stretch desde el sitio oficial del proyecto, debido a que la versión existente en los repositorios del sistema es muy antigua y no soporta las últimas versiones de PostgreSQL:

como descargar phppgadmin en debian 9 stretch

Encontraremos un archivo en formato .tar.bz2 que descargaremos directamente desde el navegador, o podemos descargar desde consola (si trabajamos remotamente) con la herramienta wget:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.bz2
~$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.bz2
~$ wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.bz2

Cómo instalar phpPgAdmin en Debian 9 Stretch

Para instalar phpPgAdmin en Debian 9 Stretch empezaremos por descomprimir el paquete que acabamos de descargar en la ruta que nos interese:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo tar xf phpPgAdmin-7.13.0.tar.bz2 -C /var/www/
~$ sudo tar xf phpPgAdmin-7.13.0.tar.bz2 -C /var/www/
~$ sudo tar xf phpPgAdmin-7.13.0.tar.bz2 -C /var/www/

Como el directorio que se acaba de crear contiene números de versión en su nombre, para facilitar la instalación y el mantenimiento crearemos un enlace simbólico sin números:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo ln -s /var/www/phpPgAdmin-7.13.0/ /var/www/phpPgAdmin
~$ sudo ln -s /var/www/phpPgAdmin-7.13.0/ /var/www/phpPgAdmin
~$ sudo ln -s /var/www/phpPgAdmin-7.13.0/ /var/www/phpPgAdmin

Configuración del servicio web

Creamos un archivo de configuración para el servicio web:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/apache2/conf-available/phppgadmin.conf
~$ sudo nano /etc/apache2/conf-available/phppgadmin.conf
~$ sudo nano /etc/apache2/conf-available/phppgadmin.conf

El contenido será el alias para hacer navegable la aplicación:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Alias /phppgadmin /var/www/phpPgAdmin
Alias /phppgadmin /var/www/phpPgAdmin
Alias /phppgadmin /var/www/phpPgAdmin

Guardamos el archivo y activamos la nueva configuración:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo a2enconf phppgadmin
~$ sudo a2enconf phppgadmin
~$ sudo a2enconf phppgadmin

Y la aplicamos recargando la configuración del servicio web:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl reload apache2
~$ sudo systemctl reload apache2
~$ sudo systemctl reload apache2

PHP

Necesitamos alguna extensión que obtendremos desde los repositorios, indicando en el nombre de los paquetes el número de versión de PHP instalada en el sistema (en este caso la 7.4):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo apt install -y php7.4-mbstring
~$ sudo apt install -y php7.4-mbstring
~$ sudo apt install -y php7.4-mbstring

Si usas otra versión, cambia en el comando anterior php7.4- por lo que corresponda.

Para que las nuevas extensiones estén disponibles, recargamos la configuración del servicio web:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl reload apache2
~$ sudo systemctl reload apache2
~$ sudo systemctl reload apache2

Preparativos del sistema de bases de datos

Si queremos acceder a nuestro servicio de bases de datos PostgreSQL en Debian 9 desde cualquier punto de la red con phpPgAdmin debemos tener en cuenta que, aunque conectemos desde el otro extremo del planeta, en realidad se trata de acceso local, ya que es el servidor web local el que accede por nosotros al servidor de bases de datos.

El problema es que mientras que phpPgAdmin exige autenticación mediante contraseña (como cualquier servicio web), PostgreSQL por defecto autentica localmente mediante la cuenta del sistema que usa el rol en cada caso, por tanto sin necesidad de contraseña de rol. Así que se hace necesario configurar PostgreSQL para que los roles locales sean autenticados por contraseña, como exige phpPgAdmin. Para crear una contraseña de nuestro rol de PostgreSQL iniciamos sesión local con el cliente psql:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ psql
...
chacho=#
~$ psql ... chacho=#
~$ psql
...
chacho=#

Y creamos la contraseña con el comando \password:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chacho=# \password
Ingrese la nueva contraseña:
Ingrésela nuevamente:
chacho=#
chacho=# \password Ingrese la nueva contraseña: Ingrésela nuevamente: chacho=#
chacho=# \password
Ingrese la nueva contraseña:
Ingrésela nuevamente:
chacho=#

Sólo queda cerrar sesión con el comando \q:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chacho=# \q
~$
chacho=# \q ~$
chacho=# \q
~$

Pero no basta con crear contraseñas para los roles. La configuración por defecto de PostgreSQL en Debian 9 autentica los roles a través del usuario del sistema que realiza la conexión, sin necesitar contraseña. Por tanto, aunque hayamos creado una contraseña para el rol de nuestro usuario, seguiremos pudiendo acceder con psql sin que se nos pida la misma:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ psql
...
chacho=#
~$ psql ... chacho=#
~$ psql
...
chacho=#

Cambiaremos este comportamiento editando el archivo pg_hba.conf de PostgreSQL (modifica la ruta del siguiente comando de acuerdo con la versión de PostgreSQL instalada en tu sistema):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf

Buscaremos la directiva local para los usuarios:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
# "local" is for Unix domain socket connections only
local all all peer
...
... # "local" is for Unix domain socket connections only local all all peer ...
...
# "local" is for Unix domain socket connections only
local   all             all                                     peer
...

Y cambiaremos peer por md5:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
local all all md5
...
... local all all md5 ...
...
local   all             all                                     md5
...

No lo hacemos para el superusuario postgres porque es posible que ciertos procesos del sistema usen postgres para tareas de mantenimiento o actualización, y encontrarían un problema con el cambio de autenticación. Recuerda que es recomendable tener un rol administrador distinto de postgres para trabajar.

Una vez guardados los cambios, aplicaremos la nueva configuración recargando el servicio postgresql de Debian 9:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl reload postgresql
~$ sudo systemctl reload postgresql
~$ sudo systemctl reload postgresql

Una implicación de todo esto es que al crear nuevos roles habrá que asignarles contraseña para que puedan conectar y que previamente a esta configuración los roles existentes deben crear una contrseña (tal como hemos hecho en este ejemplo).

Cómo acceder a phpPgAdmin en Debian 9 Stretch

Para acceder a phpPgAdmin en Debian 9 Stretch desde un navegador añadiremos la ruta del alias que hemos creado, /phppgadmin en este ejemplo, a la dirección IP o dominio de nuestro servidor.

Por ejemplo, la máquina donde probamos este tutorial es accesible en el subdominio debian9.local.lan, por lo que la URL http://debian9.local.lan/phppgadmin/ sería válida para acceder.

como instalar phppgadmin en debian 9 stretch

Si queremos acceder al servicio PostgreSQL de nuestra máquina local seguiremos cualquiera de los enlaces «Servidores» a la vista, que nos llevarán a una página con el listado de servidores PostgreSQL disponibles (que también puedes ver en el panel lateral):

instalar phppgadmin en debian 9 stretch

Inicialmente, el único servicio PostgreSQL disponible a través de phpPgAdmin es el servicio local de la propia máquina Debian 9 en la que estamos realizando esta instalación y configuración, por lo que pulsaremos sobre el enlace para conectar y se nos presentará una página de login o inicio de sesión:

instalacion de phppgadmin en debian 9 stretch

Introducimos las credenciales de nuestro rol de PostgreSQL y accederemos a la interfaz de administración de phpPgAdmin:

phppgadmin en debian 9 stretch

Ya puedes empezar a trabajar con tu rol, haciendo todas las tareas que permitan sus privilegios.

Cómo acceder con el rol postgres a phpPgAdmin en Debian 9

Hemos dejado claro que igual que con otros servicios no se debe acceder nunca remotamente con el superusuario por defecto (postgres en el caso de PostgreSQL). Si aun así estás empeñado en hacerlo (supongo que tendrás un motivo), aquí van los pasos necesarios.

En primer lugar crearemos una contraseña para el rol postgres:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo -u postgres psql
...
postgres=# \password
Ingrese la nueva contraseña:
Ingrésela nuevamente:
postgres=# \q
~$
~$ sudo -u postgres psql ... postgres=# \password Ingrese la nueva contraseña: Ingrésela nuevamente: postgres=# \q ~$
~$ sudo -u postgres psql
...

postgres=# \password
Ingrese la nueva contraseña:
Ingrésela nuevamente:
postgres=# \q
~$

A continuación activa la autenticación local del rol postgres mediante contraseña en el archivo pg_hba.conf (modifica la ruta del siguiente comando de acuerdo con la versión de PostgreSQL instalada):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf
~$ sudo nano /etc/postgresql/XXX/main/pg_hba.conf

Esta es la línea que debes cambiar:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
local all postgres peer
...
... local all postgres peer ...
...
local   all             postgres                                peer
...

Cambiando el valor peer por md5:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
local all postgres md5
...
... local all postgres md5 ...
...
local   all             postgres                                md5
...

Recarga la configuración de PostgreSQL:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo systemctl reload postgresql
~$ sudo systemctl reload postgresql
~$ sudo systemctl reload postgresql

Verifica que ahora necesitas suministrar la contraseña para iniciar sesión con el rol postgres:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo -u postgres psql
Contraseña:
...
postgres=#
~$ sudo -u postgres psql Contraseña: ... postgres=#
~$ sudo -u postgres psql
Contraseña:
...

postgres=#

Edita el archivo config.php.inc: de phpPgAdmin:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
~$ sudo nano /etc/phppgadmin/config.inc.php
~$ sudo nano /etc/phppgadmin/config.inc.php
~$ sudo nano /etc/phppgadmin/config.inc.php

Busca la variable $conf[‘extra_login_security’]:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
// If extra login security is true, then logins via phpPgAdmin with no
// password or certain usernames (pgsql, postgres, root, administrator)
// will be denied. Only set this false once you have read the FAQ and
// understand how to change PostgreSQL's pg_hba.conf to enable
// passworded local connections.
$conf['extra_login_security'] = true;
...
... // If extra login security is true, then logins via phpPgAdmin with no // password or certain usernames (pgsql, postgres, root, administrator) // will be denied. Only set this false once you have read the FAQ and // understand how to change PostgreSQL's pg_hba.conf to enable // passworded local connections. $conf['extra_login_security'] = true; ...
...
// If extra login security is true, then logins via phpPgAdmin with no
// password or certain usernames (pgsql, postgres, root, administrator)
// will be denied. Only set this false once you have read the FAQ and
// understand how to change PostgreSQL's pg_hba.conf to enable
// passworded local connections.
$conf['extra_login_security'] = true;
...

Y cambia su valor a false:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
...
$conf['extra_login_security'] = false;
...
... $conf['extra_login_security'] = false; ...
...
$conf['extra_login_security'] = false;
...

Una vez guardados los cambios, la configuración se aplica de forma inmediata, no es necesario reiniciar ningún servicio, puedes acceder de inmediato.

Conclusión

Ahora que sabes cómo instalar phpPgAdmin en Debian 9 Stretch tienes un método más cómodo y visual para trabajar con PostgreSQL, que seguramente acelerará tu ritmo de trabajo con este sistema de bases de datos. Recuerda que es muy importante trabajar con la conexión cifrada, con protocolo HTTPS, si accedes remotamente.

En caso de dudas, preguntas, tal vez alguna sugerencia o corrección, puedes dejar un comentario.

Ah, y si esta breve guía de instalación de phpPgAdmin en Debian 9 Strech ha cubierto tus expectativas y quieres agradecérmelo, puedes hacerlo dejando una propina de 1 $ desde PayPal:

¡Gracias!

5/5 - (1 voto)

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

Buy Me A Coffee
Gracias por la visita. Si te gusta el artículo, ¡puedes invitarme a un café!