En este artículo veremos cómo instalar PostgreSQL en FreeBSD 11 paso a paso, de manera que puedas trabajar con este potente motor de bases de datos relacionales sobre tu servidor o VPS FreeBSD.
Contenido
Antes de instalar PostgreSQL en FreeBSD 11
Para poder completar esta guía de instalación de PostgreSQL en FreeBSD 11 lo único que necesitas es la siguiente base:
- Una instalación actualizada de FreeBSD 11.
- Un usuario con privilegios de sudo.
- Acceso a Internet.
Cómo instalar PostgreSQL en FreeBSD 11
Vamos a instalar PostgreSQL en FreeBSD 11 desde los propios repositorios del sistema, ya que contienen versiones muy actualizadas. De hecho, si realizamos una búsqueda filtrada, veremos qué versiones de PostgreSQL Server están disponibles en FreeBSD 11:
~$ sudo pkg search ^postgresql |grep -i server postgresql10-server-10.17_2 PostgreSQL is the most advanced open-source database available anywhere postgresql11-server-11.12_1 PostgreSQL is the most advanced open-source database available anywhere postgresql12-server-12.7_1 PostgreSQL is the most advanced open-source database available anywhere postgresql13-server-13.3_1 PostgreSQL is the most advanced open-source database available anywhere postgresql14-server-14.b2_2 PostgreSQL is the most advanced open-source database available anywhere postgresql96-server-9.6.22_1 PostgreSQL is the most advanced open-source database available anywhere
En el momento de actualizar esta guía disponemos de revisiones recientes de las versiones 9.6, 10, 11, 12, 13 y 14 (esta última en versión beta) de PostgreSQL, pudiendo instalar la que se ajuste a nuestras necesidades.
¿Qué versión instalar?
Si vas a trabajar con PHP tendrás que utilizar PostgreSQL 12, ya que la extensión correspondiente de PHP se basa en dicha versión. Si no vas a trabajar con PHP, puedes instalar la que necesites.
En este artículo instalamos la última versión estable disponible, pero todo lo explicado a continuación sirve para cualquier versión anterior:
~$ sudo pkg install -y postgresql13-server
Tras la descarga e instalación de los paquetes y dependencias de PostgreSQL se crea un nuevo servicio en FreeBSD 11, el servicio postgresql, que no queda en ejecución ni habilitado, tareas que tendremos que realizar manualmente.
Habilitamos el servicio PostgreSQL para que inicie automáticamente con cada arranque del sistema editando el archivo rc.conf:
~$ sudo nano /etc/rc.conf
Tendremos que añadir al final del archivo la siguiente línea:
... postgresql_enable="YES"
Guardamos los cambios en el archivo y lo cerramos.
Pero antes de arrancar el servicio es preciso inicializar las bases de datos, para lo que usaremos la opción initdb prevista para el comando service:
~$ sudo service postgresql initdb
Y ya podemos iniciar PostgreSQL por primera vez:
~$ sudo service postgresql start
Podremos comprobar el estado de PostgreSQL en cualquier momento con el comando
~$ sudo service postgresql status
Versión de PostgreSQL instalada en FreeBSD 11
Para saber en cualquier momento qué versión de PostgreSQL hay instalada en FreeBSD 11 podemos usar el comando pg_ctl con el parámetro -V:
~$ pg_ctl -V pg_ctl (PostgreSQL) 13.3
Cómo conectar a PostgreSQL en FreeBSD 11
Inicialmente el único usuario que puede conectar con PostgreSQL es el usuario postgres, que ha sido creado durante el proceso de instalación. Tendremos que usar sudo para poder trabajar con este usuario postgres a la hora de utilizar el cliente psql o cualquier otra herramienta de PostgreSQL:
~$ sudo -u postgres psql psql (13.3) Digite «help» para obtener ayuda. postgres=#
Podemos cerrar la conexión con el comando exit o con \q:
postgres=# \q
Lo ideal sería poder trabajar con nuestro usuario de FreeBSD 11, así que vamos a crear un rol administrativo de PostgreSQL con el mismo nombre que nuestro usuario, a través del usuario postgres:
~$ sudo -u postgres createuser --interactive -P Ingrese el nombre del rol a agregar: chacho Ingrese la contraseña para el nuevo rol: Ingrésela nuevamente: ¿Será el nuevo rol un superusuario? (s/n) s
Se nos pregunta el nombre para el nuevo rol (que debería coincidir con el del usuario de FreeBSD 11 con el que trabajamos).
También deberíamos crear una base de datos con el mismo nombre que el nuevo rol, asociándola al mismo:
~$ sudo -u postgres createdb chacho -O chacho
Ahora nuestro usuario del sistema puede asociarse con un rol de PostgreSQL con idéntico nombre, de modo que por fin podemos usar el cliente psql (y comandos como createuser o createdb) sin volver a usar a postgres con sudo:
~$ psql psql (13.3) Digite «help» para obtener ayuda. chacho=#
Puede que te preguntes por qué no se te ha solicitado contraseña, si durante el proceso de creación del rol la especificaste. La respuesta es el tipo de autenticación usada por defecto en PostgreSQL que se basa en el usuario de FreeBSD 11 que conecta al servicio. Por defecto al conectar y trabajar con PostgreSQL se usará, si existe, un rol con el mismo nombre que el usuario de FreeBSD 11, fallando la conexión si no existe dicho rol. La autenticación, por tanto queda del lado de FreeBSD 11, al ser el usuario el que se identifica en el sistema al iniciar sesión.
Cómo configurar PostgreSQL en FreeBSD 11
Para configurar PostgreSQL en FreeBSD 11 hay que tener en cuenta la ubicación de sus archivos de configuración, ya que en lugar de situarse como otros servicios y aplicaciones bajo la ruta /usar/local/etc/, PostgreSQL ubica estos archivos en /var/db/postgres/dataXX/, donde XX hace referencia a la versión de PostgreSQL usada.
Uso de roles con contraseña
Si en lugar de autenticación por usuario de FreeBSD 11 preferimos la autenticación por rol de PostgreSQL con contraseña, debemos editar el archivo pg_hba.conf:
~$ sudo nano /var/db/postgres/data13/pg_hba.conf
Buscaremos esta línea:
... local all all trust ...
Esta directiva local indica que todas las conexiones locales con cualquier usuario sean autenticadas mediante el método trust, es decir, asignando al usuario de FreeBSD 11 un rol de Postgres con idéntico nombre sin solicitar contraseña. Para que se solicite la contraseña cambiaremos trust por md5:
... local all all md5 ...
Este cambio afecta a todos los usuarios, incluido el usuario por defecto postgres, que el sistema podría querer utilizar para tareas de mantenimiento, por ejemplo. Por tanto deberíamos permitir que postgres siga utilizando autenticación trust, para lo que insertaremos una directiva local para postgres justo antes de la anterior:
... local all postgres trust local all all md5 ...
Ahora ya tenemos autenticación trust para postgres y md5 para el resto.
Guardados los cambios, debemos reiniciar el servicio para aplicarlos:
~$ sudo service postgresql restart
Ahora, al conectar a PostgreSQL con el cliente psql y nuestro usuario de FreeBSD 11 se nos asociará el rol con nombre idéntico (al no haber especificado otro), pero se solicitará su contraseña:
~$ psql Contraseña para usuario chacho: psql (13.3) Digite «help» para obtener ayuda. chacho=#
Muchas aplicaciones que trabajan sobre el servicio PostgreSQL instalado en FreeBSD 11 realizan conexiones locales usando TCP/IP en lugar de sockets de Unix, lo que puede dar problemas si trabajamos con contraseñas. Para solucionar esto editaremos de nuevo pg_hba.conf y localizaremos el siguiente bloque de configuración:
... # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust ...
Como seguramente has intuido, bastaría con cambiar trust por md5 en las dos directivas host:
... # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 ...
Tras guardar los cambios habrá que reiniciar el servicio.
Acceso remoto a PostgreSQL en FreeBSD 11
Por defecto sólo se permiten conexiones locales al servicio PostgreSQL en FreeBSD 11, así que tendremos que realizar algún ajuste sobre el archivo postgresql.conf si queremos trabajar remotamente o permitir conexiones en red:
~$ sudo nano /var/db/postgres/data13/postgresql.conf
Buscaremos la directiva listen_addresses:
... #listen_addresses = 'localhost' # what IP address(es) to listen on; ...
Podemos ver que está desactivada, por lo que debemos eliminar el carácter # al inicio de línea y cambiaremos el valor localhost por *:
... listen_addresses = '*' ...
Guardamos los cambios y cerramos el archivo.
En el caso de conexiones en red, lo habitual es tener activada la autenticación por contraseña, así que además de la configuración realizada en apartados anteriores habría que realizar algún ajuste más en pg_hba.conf:
~$ sudo nano /var/db/postgres/data13/pg_hba.conf
Buscaremos este bloque de directivas host:
... # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 ...
Estas directivas hacen referencia a las conexiones locales, así que justo a continuación añadiremos otra directiva host para el resto de conexiones:
... # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Conexiones TCP/IP por defecto host all all all md5 ...
Guardamos los nuevos ajustes y reiniciamos el servicio:
~$ sudo service postgresql restart
Para probar el acceso remoto desde otro sistema en red que cuente con un cliente como psql, indicaremos la dirección del servidor FreeBSD 11 con el parámetro -h y el rol con el que queremos conectar con el parámetro -U:
~$ psql -h freebsd11.local.lan -U chacho
Conclusión
Ahora que sabes cómo instalar PostgreSQL en FreeBSD 11 ya puedes trabajar tanto de forma local como remota sobre tus propios desarrollos de bases de datos, o proporcionar la base que necesitan aplicaciones de terceros.
¡Apoya comoinstalar.me!
¿Ya tienes este potente motor de bases de datos funcionando en FreeBSD 11? Si es así y te apetece agradecérnoslo colaborando mínimamente con el mantenimiento de este sitio y la creación de más artículos y tutoriales, puedes hacerlo invitándonos a un café:
O dejando 1 $ de propina con PayPal:
¡Gracias!