como instalar postgresql en centos 7

Cómo instalar PostgreSQL en CentOS 7

En esta guía vamos a ver cómo instalar PostgreSQL en CentOS 7 paso a paso, para dar soporte a aquellos usuarios que necesitan integrar este motor de bases de datos de código abierto en sus sistemas. Al final de esta guía tendrás PostgreSQL funcionando en tu servidor o VPS CentOS, listo para trabajar con SQL desde el cliente de consola.

Antes de instalar PostgreSQL en CentOS 7

Para poder seguir esta guía de instalación de PostgreSQL en Linux CentOS 7 es necesario cumplir unos mínimos requisitos, poca cosa en realidad:

  • Un sistema Linux CentOS 7 actualizado.
  • Acceso por consola mediante un usuario con privilegios de sudo o root.
  • Conexión a Internet.

Si estás leyendo esta guía es prácticamente seguro que cumples estos requerimientos, así que abramos una consola de comandos y empecemos con el trabajo.

Cómo configurar el repositorio oficial de PostgreSQL en CentOS 7

Puesto que la versión disponible de PostgreSQL en el repositorio EPEL está bastante anticuada (la 9.2.24 en el momento de redactar esta guía), vamos a configurar el repositorio oficial de PostgreSQL en CentOS 7 para acceder a las versiones estables más recientes de este servicio de bases de datos.

Para ello, instalaremos el siguiente paquete:

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

Actualizaremos la información de los repositorios con yum para incluir los nuevos paquetes disponibles en el repositorio oficial de PostgreSQL:

~$ sudo yum update

Cómo instalar PostgreSQL en CentOS 7

Para instalar PosgtreSQL en CentOS 7 utilizando los paquetes disponibles en el nuevo repositorio que acabamos de configurar, hemos de tener en cuenta que existen varias versiones disponibles del servicio de bases de datos, concretamente las versiones 9.4, 9.5, 9.6, 10, 11 y 12.

Con las listas de paquetes actualizadas ya podemos instalar PostgreSQL. Instalaremos el paquete postgresqlXX-server (donde XX hace referencia a la versión que nos interese), entre cuyas dependencias se encuentra también el paquete con los clientes de consola:

~$ sudo yum -y install postgresql12-server

Una vez descargados e instalados los paquetes y dependencias se crea un nuevo servicio llamado postgresql-12 (para otras versiones el nombre del servicio termina en -9.5, -9.6, -10 u -11). Este servicio NO se activa por defecto para iniciar con el sistema ni está en ejecución aún.

Cómo iniciar PostgreSQL Server en CentOS 7

Antes de poder activar el servicio es necesario inicializar los archivos y bases de datos de PostgreSQL, lo que haremos con el comando postgresql-XX-setup:

~$ sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

Hecho esto, podemos habilitar el servicio postgresql-XX para que inicie junto con CentOS 7:

~$ sudo systemctl enable postgresql-12

Ahora ya podemos por fin iniciar el servicio mediante el comando start de systemctl:

~$ sudo systemctl start postgresql-12

Y tendremos el servicio activado y en funcionamiento, cosa que podemos comprobar fácilmente con el comando systemctl status postgresql-12:

como instalar postgresql en centos 7

Justo lo que buscábamos. Vamos a ver alguna cosa más para conectar al servicio desde consola.

Cómo conectar al servicio PostgreSQL en CentOS 7

Durante la instalación se crean un grupo y un usuario postgres con los que funciona el servicio. En teoría nada impide que uses el usuario postgres para conectar con el servidor a través del cliente psql:

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

postgres=#

Puedes cerrar la sesión con el comando exit o \q:

postgres=# exit
~$

Pero lo habitual es que quieras trabajar con tu usuario de CentOS sin usar otro distinto mediante sudo.

PostgreSQL tiene la particularidad de que al iniciar sesión desde consola trata de asociar el usuario del sistema con un rol con el mismo nombre, conectándolo a una base de datos también con el mismo nombre.

Cómo crear un rol para tu usuario de CentOS

Vamos a empezar creando un rol de PostgreSQL con nuestro login de CentOS:

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

Ya hemos creado el rol chacho (mi usuario en CentOS 7 es chacho). Ahora creamos la base de datos para este nuevo rol, que debe llevar el mismo nombre:

~$ sudo -u postgres -i createdb chacho -O chacho

Hemos usado el argumento -O para que se conceda la propiedad de la base de datos a nuestro nuevo rol, porque por defecto sería propiedad del rol que la crea, que sería postgres en este caso.

Tenemos todo lo que necesitamos, por lo que podemos usar el cliente psql desde consola con nuestro propio usuario:

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

chacho=#

Ahora podemos empezar a trabajar con sentencias SQL ya sea creando tablas, insertando datos, etc.

Pero también es importante saber hacer esto porque muchas veces necesitamos instalar algún tipo de aplicación, framework, CMS, etc. que se apoya sobre PostgreSQL y requiere su propio rol y base de datos para efectuar la instalación.

Cómo acceder a PostgreSQL en CentOS 7

En la mayoría de escenarios necesitaremos proteger el acceso al servicio PostgreSQL mediante contraseña. Para crear una contraseña para nuestro usuario iniciaremos sesión con el cliente de consola psql y emplearemos el comando \password:

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

Además, si nuestro usuario tiene nivel de administración, podremos crear contraseñas para otros roles:

-# \password paco

En cualquier caso, no basta con crear las contraseñas, sino que también habrá que configurar PostgreSQL para que utilice este sistema de autenticación. Para ello, editaremos el archivo pg_hba.conf:

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

Buscaremos la línea que empieza por local referida a las conexiones locales a través de sockets de Unix:

...
local   all             all                                     peer
...

Modificaremos esta línea para que en vez de utilizar la autenticación por sockets se use la autenticación por contraseña:

...
local   all             all                                     md5
...

Si quieres que el usuario postgres se comporte como hasta ahora, es decir, no sea necesario que use contraseña, antes de esa línea añadiremos una similar para postgres:

...
local   all             postgres                                peer
local   all             all                                     md5
...

Si te decides a añadir esta configuración para postgres es importante el orden, ya que PostgreSQL evalúa sus archivos de configuración desde el final hacia el principio. Por tanto, en el caso anterior primero se evalúa la segunda línea local (se usará contraseña para todos los usuarios) y después la primera (el usuario postgres se autenticará por el método peer). Si se invirtiese el orden de las líneas la configuración particular para postgres quedaría invalidada por la configuración general.

Guardamos los cambios, cerramos el archivo y reiniciamos el servicio PostgreSQL para aplicar los cambios:

~$ sudo systemctl restart postgresql-12

Ahora al conectar a PostgreSQL con el cliente psql se nos solicitará la contraseña del rol asociado al usuario:

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

chacho=#

Justo lo que queríamos.

Acceso local por TCP/IP

Muchas aplicaciones basadas en PostgreSQL acceden localmente usando la pila TCP/IP, es decir, conectando por red en lugar de conexiones tipo Unix. Con la configuración por defecto estos intentos de conexión fallarán, ya que queda un ajuste por realizar en pg_hba.conf:

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

Buscaremos esta sección:

...
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
...

Tendremos que sustituir la autenticación ident por md5:

...
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
...

Guardados los cambios, habrá que recargar la configuración del servicio:

~$ sudo systemctl reload postgresql-12

Conclusión

Ahora que ya sabes cómo instalar PostgreSQL en Linux CentOS 7 puedes dejar el servicio listo para trabajar con otros sistemas y aplicaciones, o para desarrollar tu propia base de datos. Empezar a trabajar con este sistema puede ser un poco más engorroso si estabas acostumbrado a otros motores como MySQL o MariaDB, pero una vez aclarados los pasos iniciales el trabajo diario es similar.

¿Tienes alguna duda o pregunta? ¿Alguna sugerencia o has apreciado algún error y quieres notificarlo? No dudes en dejar un comentario.

¡Apoya este sitio!

¿Estabas atascado con la instalación de PostgreSQL en CentOS 7? ¿No lograbas iniciar el servidor o conectar con el cliente? Si has conseguido salir del callejón sin salida, quizás desees agradecérnosolo con una mínima donación para el mantenimiento de este sitio y promover nuevas guías, y puedes hacerlo invitándonos a un café:

 

O dejando, si lo prefieres, una propina de 1 $ en PayPal:

¡Gracias!

Valora este sitio

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (8 votos, promedio: 5,00 de 5)
Cargando...

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies