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.
Contenido
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
:
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
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!