Cómo instalar PostgreSQL en FreeBSD 12.1

En esta entrada veremos cómo instalar PostgreSQL en FreeBSD 12.1 paso a paso, de modo que puedas hacer funcionar este servicio de bases de datos relacionales en tu servidor o VPS FreeBSD tanto para desarrollos propios como para soporte de aplicaciones complejas.

Antes de instalar PostgreSQL en FreeBSD 12.1

Si quieres completar esta guía de instalación de PostgreSQL en FreeBSD 12.1 deberías satisfacer al menos los siguientes requisitos básicos:

  • Una máquina FreeBSD 12.1 actualizada.
  • Un usuario con privilegios de sudo o el propio root.
  • Acceso a Internet.

Cómo instalar PostgreSQL en FreeBSD 12.1

Vamos a instalar PostgreSQL en FreeBSD 12.1 utilizando los paquetes disponibles en los propios repositorios del sistema, así que en primer lugar actualizaremos las listas de paquetes:

$ sudo pkg update

Los repositorios ofrecen distintas versiones del motor de bases de datos PostgreSQL, concretamente en el momento de redactar este tutorial tenemos desde la versión 9.4 hasta la 12.r1. Podemos comprobar las versiones disponibles mediante una búsqueda filtrada del comando pkg:

$ sudo pkg search ^postgresql |grep -i server
postgresql10-server-10.10      PostgreSQL is the most advanced open-source database available anywhere
postgresql11-server-11.5_1     PostgreSQL is the most advanced open-source database available anywhere
postgresql12-server-12.r1      PostgreSQL is the most advanced open-source database available anywhere
postgresql94-server-9.4.24     PostgreSQL is the most advanced open-source database available anywhere
postgresql95-server-9.5.19     PostgreSQL is the most advanced open-source database available anywhere
postgresql96-server-9.6.15     PostgreSQL is the most advanced open-source database available anywhere

Quizás sea arriesgado en algunos entornos probar la versión candidata 12.r1, así que en esta ocasión nos inclinaremos por instalar PostgreSQL 11.5 en FreeBSD 12.1, mediante el paquete postgresql11-server:

$ sudo pkg install -y postgresql11-server

Una vez descargado e instalado el paquete postgresql11-server y sus dependencias queda algo de trabajo extra para levantar el nuevo servicio postgresql que se crea en FreeBSD 12.1, así que vayamos paso a paso.

Como el servicio PostgreSQL no está habilitado para el arranque automático junto a FreeBSD 12.1, lo habilitamos con el comando service:

$ sudo service postgresql enable

Además, la base de datos debe ser inicializada, y es un trabajo que no realiza el instalador. Para ello usaremos la opción especial initdb del servicio postgresql que se incluye para el comando service:

$ sudo service postgresql initdb

Hecho esto ya podemos levantar el servicio postgresql:

$ sudo service postgresql start

A partir de ahora, podremos comprobar el estado del servicio PostgreSQL en FreeBSD 12.1 con la opción status del comando service:

$ sudo service postgresql status
pg_ctl: el servidor está en ejecución (PID: 948)
/usr/local/bin/postgres "-D" "/var/db/postgres/data11"

¿Qué versión de PostgreSQL he instalado en FreeBSD 12.1?

Si necesitas saber la versión del servicio PostgreSQL que has instalado en tu sistema FreeBSD 12.1 es tan sencillo como usar la opción -V del comando pg_ctl:

$ pg_ctl -V
pg_ctl (PostgreSQL) 11.5

Cómo instalar el cliente de PostgreSQL en FreeBSD 12.1

Cuando instalas el servicio PostgreSQL también se instala como parte de las dependencias el cliente de consola psql.

Pero si lo que quieres es instalar el cliente de PostgreSQL en FreeBSD 12.1 sin tener que instalar el servicio, el paquete que necesitas es postgresql11-client, que puedes instalar con pkg:

$ sudo pkg install -y postgresql11-client

Recuerda que dispones de otras versiones del cliente, como son las 9.4, 9.5, 9.6, 10.10 y 12.r1.

En cualquier caso ya podrás usar el comando psql para acceder remotamente a otros servicios.

como instalar postgresql en freebsd 12.1

Cómo crear tus propios roles de PostgreSQL

El sistema de roles de PostgreSQL asocia a la cuenta de FreeBSD 12.1 que trata de conectar con un rol del sistema de bases de datos con idéntico nombre.

Inicialmente, tras la instalación, se crea un usuario para FreeBSD 12.1 llamado postgres, y un rol administrador de PostgreSQL también con ese nombre, por lo que sólo podemos trabajar con el usuario postgres del sistema:

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

postgres=#

Salimos de la sesión interactiva con los comandos \q o exit.

Pero seguramente querrías crear un rol para tu usuario de trabajo con capacidades administrativas. Esto podemos hacerlo mediante el comando createuser, aunque aún tendremos que utilizar a postgres para conseguirlo:

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

Acabamos de crear un rol administrador para nuestra cuenta de trabajo (en tu caso usa el nombre de tu usuario).

Pero cuando un rol de PostgreSQL quiere conectar al servicio, se le trata de asociar una base de datos con idéntico nombre, que para nuestro nuevo rol aún no existe. Una forma de crear esta base de datos es usnado de nuevo al usuario postgres con el comando createdb, y otra es usar nuestro propio nuevo rol:

$ createdb
$

Parece que no ha pasado nada, pero si vuelves a repetir la operación comprobarás que ya se había creado la base de datos con el nombre de tu rol:

$ createdb
createdb: falló la creación de la base de datos:
ERROR:  la base de datos «chacho» ya existe

Ya podemos usar nuestro rol para conectar al servicio:

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

chacho=#

Cómo configurar PostgreSQL en FreeBSD 12.1

A la hora de configurar PostgreSQL en FreeBSD 12.1 puede ser un poco difícil encontrar sus archivos de configuración, por lo que conviene saber que estos se encuentran en la ruta /var/db/postgres/dataxx/, donde xx será la versión de PostgreSQL instalada.

En este ejemplo los archivos de configuración de PostgreSQL se encuentran en /var/db/postgres/data11/.

Al hacer cambios en estos archivos, será necesario reiniciar PostgreSQL:

$ sudo service postgresql restart

Acceso remoto a PostgreSQL en FreeBSD 12.1

Un ejemplo de ajuste de la configuración de PostgreSQL sería permitir el acceso remoto al servicio en nuestro sistema FreeBSD 12.1.

Para ello editaremos el archivo de configuración postgresql.conf:

$ sudo nano /var/db/postgres/data11/postgresql.conf

Buscaremos la directiva listen_addresses:

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

Observamos que está desactivada, así que la activaremos eliminando el carácter # inicial y cambiaremos su valor para permitir conexiones remotas:

...
listen_addresses = '*'
...

No basta con hacer que el servicio esté disponible a través de los distintos adaptadores de red, sino que además hay que permitir que los roles conecten remotamente. Para esto editaremos el archivo pg_hba.conf:

$ sudo nano /var/db/postgres/data11/pg_hba.conf

Añadiremos al final del archivo una nueva línea con una directiva host de este estilo:

host    all             all             all                     md5

Esto significa que se permite el acceso desde la red a todas las bases de datos con todos los roles usando contraseña.

Guardaremos los cambios de este archivo y reiniciaremos el servicio para que cargue las nuevas configuraciones:

$ sudo service postgresql restart

Los roles con los que hemos estado trabajando no usan contraseña. Dejaremos el rol postgres como está, pero crearemos una contraseña para el rol de nuestro usuario de trabajo:

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

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

Si hemos creado otros roles podemos crearles contraseñas desde nuestro administrador:

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

Ahora ya podemos acceder remotamente al servicio PostgreSQL de nuestro sistema FreeBSD 12.1 desde otra máquina con un cliente como psql, indicando la dirección o dominio del servidor:

Contraseñas locales

Puede que haya circunstancias en las que necesites que los roles usen autenticación por contraseña en local.

Un ejemplo típico de esto es cuando se instala el típico administrador web realizado en PHP, para trabajar con PostgresSQL a través de un navegador. Aunque conectemos desde cualquier punto remoto, el acceso es local, ya que es el servidor web el que accede localmente al servicio de bases de datos. Por tanto hay que establecer contraseñas locales.

Ya vimos antes cómo crear contraseñas para los roles, ahora sólo queda aplicar una configuración que obligue al uso de estas contraseñas en acceso local. Esto lo haremos editando el archivo pg_hba.conf de nuevo:

$ sudo nano /var/db/postgres/data11/pg_hba.conf

Localizaremos esta directiva local:

...
# "local" is for Unix domain socket connections only
local   all             all                                     trust
...

Y cambiaremos el valor trust por md5:

...
# "local" is for Unix domain socket connections only
local   all             all                                     md5
...

Lo recomendable es dejar al usuario postgres sin contraseña, pero como la directiva anterior le afecta, añadimos una directiva local personalizada permitiendo el acceso sin contraseña ANTES de la línea que afecta a todos los usuarios:

...
# "local" is for Unix domain socket connections only
local   all             postgres                                trust
local   all             all                                     md5
...

Guardados los cambios, es necesario reiniciar el servicio:

$ sudo service postgresql restart

Desde este momento, cada vez que iniciemos sesión local con nuestro rol de PostgreSQL, se nos solicitará su contraseña:

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

chacho=#

Conclusión

Sabiendo cómo instalar PostgreSQL en FreeBSD 12.1, y eligiendo la versión que más te interese, puedes dar el soporte preciso a tus desarrollos o a las aplicaciones de tu servidor o VPS FreeBSD.

En caso de dudas, preguntas, sugerencias, correciones, etc. puedes dejar un comentario.

¡Apoya este sitio!

¿Has conseguido montar tu servicio de bases de datos gracias a esta breve guía de instalación y configuración de PostgreSQL en FreeBSD 12.1? Si es así y quieres agradecérnoslo, cualquier mínima contribución ayuda al mantenimiento de este sitio y preparación de nuevas guías y tutoriales sobre FreeBSD 12.1 y PostgreSQL. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 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