Cómo instalar PostgreSQL en CentOS 6

En esta ocasión explicamos cómo instalar PostgreSQL en CentOS 6 paso a paso, de modo que podrás trabajar incluso con la última versión estable de este servicio de bases de datos en tu servidor o VPS CentOS.

Antes de instalar PostgreSQL en CentOS 6

Para completar esta guía de instalación de PostgreSQL en CentOS 6 deberías satisfacer al menos las siguientes condiciones:

  • Una instalación actualizada de CentOS 6.
  • Un usuario con permisos de sudo o el mismo root.
  • Conexión a Internet.

Instalar el repositorio de PostgreSQL para CentOS 6

Como la versión disponible en los repositorios de la distribución está obsoleta por completo, vamos a instalar el repositorio oficial de PostgreSQL en CentOS 6, lo que nos ofrecerá los últimos lanzamientos de las versiones más recientes. Para ello, instalaremos el siguiente paquete:

~$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Y actualizamos las listas de paquetes:

~$ sudo yum update

Ahora tendremos a nuestra disposición las versiones 9.5, 9.6, 10, 11 y 12 de PostgreSQL para CentOS 6.

Cómo instalar PostgreSQL en CentOS 6

Para instalar PostgreSQL en CentOS 6 elegiremos el paquete correspondiente a la versión que necesitemos, en este caso la última disponible, y realizaremos la instalación con yum:

~$ sudo yum install -y postgresql12-server

Recuerda que también dispones de versiones anteriores usando los paquetes postgresql94-server, postgresql95-server, postgresql96-server, postgresql10-server y postgresql11-server.

Tras la descarga e instalación de PostgreSQL y sus dependencias se crea un nuevo servicio en CentOS 6, el servicio postgresql-12. Antes de iniciar o habilitar este servicio es necesario inicializarlo, para lo que lanzaremos el siguiente comando service:

~$ sudo service postgresql-12 initdb

Para iniciar el servicio PostgreSQL, también usaremos service:

~$ sudo service postgresql-12 start

Podemos comprobar en cualquier momento el estado del servicio con el comando service postgresql-12 status:

como instalar postgresql en centos 6

Finalmente, habilitaremos el servicio PostgreSQL para que inicie automáticamente en cada arranque de CentOS 6:

~$ sudo chkconfig --level 2345 postgresql-12 on

Cómo instalar el cliente de PostgreSQL en CentOS 6

Al instalar el servidor PostgreSQL en CentOS 6 se instala automáticamente como dependencia el cliente de consola psql. Pero si únicamente te interesa instalar el cliente de PostgreSQL en CentOS 6 porque vayas a trabajar de forma remota, por ejemplo, entonces el paquete que necesitas es postgresql-12:

~$ sudo yum install -y postgresql12

Cómo conectar al servicio PostgreSQL en CentOS 6

Para poder conectar con el cliente psql al servicio que acabamos de instalar e iniciar, necesitaremos usar un rol de PostgreSQL asociado a un usuario de CentOS 6. Inicialmente el único usuario que dispone de tal rol es postgres, usuario que ha sido creado durante la instalación. Podemos realizar la conexión usando sudo y este usuario postgres:

~$ sudo -u postgres -i psql
psql (12.7)
Digite «help» para obtener ayuda.

postgres=#

Veremos que la conexión es posible y que el prompt del cliente psql muestra el rol utilizado (postgres, como el usuario que realiza la conexión) y que es administrador, según delata el carácter #.

Saldremos del cliente psql con el comando exit:

postgres=# exit

Quizás nos pueda interesar disponer de un rol de PostgreSQL para nuestro usuario de CentOS 6, incluso como administrador, y así no tener que usar al usuario postgres con sudo. Para esta tarea emplearemos el comando createuser:

~$ sudo -u postgres -i createuser --interactive
Ingrese el nombre del rol a agregar: chacho
¿Será el nuevo rol un superusuario? (s/n) s
~$

El único paso que nos queda es asociar una base de datos con el mismo nombre que nuestro rol y usuario, que crearemos también a continuación, pero esta vez usaremos nuestro usuario de trabajo, ya que ahora dispone de rol administrativo, pudiendo utilizar directamente el comando createdb:

~$ createdb chacho -O chacho

Ya tenemos todo lo necesario para realizar la conexión con nuestro usuario de CentOS 6 al servicio PostgreSQL:

~$ psql
psql (12.7)
Digite «help» para obtener ayuda.

chacho=#

Creación de roles y bases de datos

Siempre que necesites un rol y una base de datos de PostgreSQL para una aplicación, puedes crearlos desde la la línea de comandos de CentOS 6.

Crearemos el rol:

~$ createuser paco

Y crearemos la base de datos asociándola al rol:

~$ createdb paco -O paco

Cómo configurar PostgreSQL en CentOS 6

Aunque el servicio ya funciona correctamente algo en lo que puedes haber reparado es que no se solicitan contraseñas de acceso a PostgreSQL, y esto es algo que en algún momento puedes necesitar activar.

Para asignar contraseña a tu propio usuario, desde el cliente psql puedes usar el comando \password:

=# \password
Ingrese la nueva contraseña:
Ingrésela nuevamente:
=#

Pero un administrador también puede crear contraseñas para otros roles:

=# \password paco
Ingrese la nueva contraseña:
Ingrésela nuevamente:
=#

Aunque nada de esto servirá si no activamos en la configuración de PostgreSQL el uso de contraseñas locales. Para ello, editaremos el archivo

~$ sudo nano /var/lib/pgsql/12/data/pg_hba.conf

Buscaremos la línea siguiente:

...
local   all             all                                     peer
...

Y sustituiremos peer por md5:

...
local   all             all                                     md5
...

Guardados los cambios y cerrado el archivo, será necesario recargar la configuración del servicio para que se aplique el nuevo ajuste:

~$ sudo service postgresql-12 reload

Ahora, cada vez que usemos el cliente psql se nos solicitará la contraseña:

~$ psql
Contraseña para usuario chacho:
psql (12.7)
Digite «help» para obtener ayuda.

=#

Acceso remoto a PostgreSQL en CentOS 6

Por defecto el servicio PostgreSQL sólo atiende conexiones locales en CentOS 6. Si deseamos permitir conexiones remotas tendremos que cambiar este comportamiento en el archivo principal de configuración de PostgreSQL:

~$ sudo nano /var/lib/pgsql/12/data/postgresql.conf

Buscaremos la directiva listen_addresses:

...
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
...

Podemos ver que está desactivada, en esto caso en lugar de desactivarla añadiremos otra línea con el valor adecuado:

...
listen_addresses = '*'
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
...

Guardamos los cambios y cerramos el archivo.

También tendremos que realizar un ajuste en pg_hba.conf, para permitir el acceso remoto:

Al final del archivo añadimos esta línea:

...
host    all     all     all     md5

Guardamos y cerramos el archivo, y en esta ocasión reiniciamos el servicio:

~$ sudo service postgresql-12 restart

Configurar el firewall de CentOS 6 para PostgreSQL

Echaremos un vistazo al estado del firewall:

~$ sudo iptables -L INPUT --line
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Tendremos que insertar la regla que necesitamos para PostgreSQL en la posición 5 o inferior, para desplazar la regla REJECT que rechaza las conexiones entrantes:

~$ sudo iptables -I INPUT 5 -m state --state NEW -p tcp --dport 5432 -j ACCEPT

Y guardaremos la nueva configuración para que sea permanente:

~$ sudo service iptables save

Probando las conexiones remotas

Desde otra máquina con un cliente de PostgreSQL, como psql, estableceremos conexión con el servidor CentOS 6, indicando la dirección del mismo y el rol con el que queremos conectar:

~$ psql -h centos6.local.lan -U chacho

instalar postgresql en centos 6

En este caso con el parámetro -h indicamos la dirección del servidor CentOS 6 y con el parámetro –U el rol con el que queremos conectar.

Conclusión

Ahora que sabes cómo instalar PostgreSQL en CentOS 6 puedes disfrutar de este potente motor de bases de datos, incluso en sus versiones recientes más estables, de modo que tu máquina CentOS 6 mantendrá incluso a día de hoy su funcionalidad.

Si tienes dudas, preguntas, alguna sugerencia de mejoras o quieres reportar algún error, puedes dejar un mensaje.

¡Apoya comoinstalar.me!

¿Ya tienes el servicio de bases de datos funcionando en tu sistema gracias a esta pequeña guía de instalación y configuración? Si es así y te apetece agradecérmelo, puedes hacerlo dejando una propina de 1 $ desde PayPal para una CocaCola:

O, si te sientes muy agradecido, puedes invitarme a un cappuccino:

¡Gracias!

Valora esta entrada

5/5 - (2 votos)

Deja un comentario