PostgreSQL en FreeBSD

Autor: Julio Merino (aka Slink)
Fecha: 16 de marzo de 2002


En este artículo voy a explicaros cómo poner en marcha el fantástico servidor de bases de datos PostgreSQL en el sistema operativo FreeBSD. De hecho, todo lo que detallo aquí es aplicable fácilmente a los demás sistemas BSDs, en los cuales la situación de algunos archivos es diferente (y otros no existen).

Instalación del paquete

Como con cualquier programa o servidor, procederemos a instalar PostgreSQL desde los ports. Os recomiendo que configuréis algunas opciones de optimización (más información). Procederemos:

# cd /usr/ports/databases/postgresql7
# make
# make install

Una vez termine, no lo arranquéis aún, ya que deberemos realizar varios cambios de la configuración.

El directorio de datos

El servidor nos instalará, por defecto, los archivos de configuración y las bases de datos en /usr/local/pgsql. Os recomiendo encarecidamente que cambiéis este directorio de lugar, para evitar "problemas" más adelante. Así que nuestro siguiente paso consistirá en llevar este directorio a /home/pgsql. Para ello lo copiaremos, conservando los archivos originales:

# cp -prf /usr/local/pgsql /home

Es necesario indicarle a PostgreSQL que hemos cambiado su directorio. El proceso es muy sencillo y consiste en cambiar los datos del usuario administrador (pgsql). Entraremos con:

# chpass pgsql

Y una vez dentro cambiaremos dos campos de la siguiente forma:

Home directory: /home/pgsql
Shell: /bin/sh

Aprovechamos aquí de asegurarnos que el shell sea /bin/sh ya que será el que procesará los archivos de configuración inicial.

Configuración del entorno

Pasaremos a configurar algunas de las variables de entorno que PostgreSQL usará. Para ello editaremos el archivo /home/pgsql/.profile (aquí es dónde interviene el shell que escojimos antes).

Las variables más interesantes de este archivo son: PGDATESTYLE y LC_ALL. Editaremos las lineas que las contienen, de modo que queden así:

#You might want to set some locale stuff here
PGDATESTYLE=ISO
LC_ALL=es_ES.ISO_8859-1
export PGDATESTYLE LC_ALL

He leido en algún lado que la elección de un lenguaje en LC_ALL provoca problemas de velocidad, así que si este punto os interesa mucho, no configuréis esta variable.

Inicializando la base de datos

Ahora que ya hemos configurado lo más básico, podemos pedir a PostgreSQL que inicie su base de datos. Debemos tener en cuenta que todas las operaciones sobre el servidor se tienen que hacer bajo el usuario pgsql; el usuario root no tiene permisos especiales, aunque lo parezca. Así pues, ejecutaremos el siguiente comando:

# su - pgsql -c "initdb"

Después de breves instantes, aparecerá un directorio nuevo, /home/pgsql/data.

Una vez ya estén los datos inicializados, procederemos a arrancar el servidor (y daremos permisos de ejecución al script, por si no tenía):

# chmod +x /usr/local/etc/rc.d/010.pgsql.sh
# /usr/local/etc/rc.d/010.pgsql.sh start

Configuración de usuarios y contraseñas

El siguiente punto de la configuración consiste en crear usuarios y configurar contraseñas. Aquí ya intervienen comandos SQL, así que os recomendaría que os pasáseis por la página de PostgreSQL.

Para proceder a ello, deberemos acceder al servidor mediante el usuario administrador, siendo root en el sistema:

# su - pgsql -c "psql template1"

Una vez dentro, cambiaremos la contraseña del administrador y crearemos un usuario para nosotros con la posibilidad de crear nuevas bases de datos:

template1=# ALTER USER pgsql WITH PASSWORD 'el_password_del_admin'
template1=# CREATE USER miuser WITH CREATEDB PASSWORD 'mi_password'

Podemos salir del programa pulsando [Ctrl+D] para seguir configurando detalles.

Autenticación

El servidor de PostgreSQL acepta, por defecto, el acceso de cualquier usuario local a las bases de datos sin pedir contraseña. Este comportamiento es muy poco recomendable por lo que procederemos a cambiarlo. Abriremos el archivo /home/pgsql/data/pg_hba.conf y buscaremos las siguientes líneas (que aparecen al final de todo):

local      all                                          trust
host       all             trust

Realizaremos los cambios de modo que queden de la siguiente forma:

local      all                                          crypt
host       all             crypt

Guardamos y salimos.

Habilitar el acceso por TCP/IP


Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb

En algunos casos no vamos a necesitar esta opción, cosa que nos dará un poco más de seguridad. De todos modos, muchas otras veces es necesaria para poder usar determinados programas o, simplemente, para gestión remota de las bases de datos. Si necesitamos esta opción, procederemos a editar el archivo /home/pgsql/data/postgresql.conf. Buscaremos la siguiente línea:

#tcpip_socket = false

Y la cambiaremos por:

tcpip_socket = true

Corrección del script de arranque

El script de inicio del servidor de FreeBSD tiene un pequeño fallo que hace que se nos pida la contraseña de administador cada vez que queramos iniciar o parar el servidor. Para evitar este comportamiento, nos dirigiremos al archivo /usr/local/etc/rc.d/010.pgsql.sh y situaremos las siguientes líneas:

su -l pgsql -c \
  '[ -d ${PGDATA} ] && exec /usr/local/bin/pg_ctl start -s -w -l ~pgsql/errlog'

Lo que NO nos interesa aquí es la opción -w, por lo que la quitaremos:

su -l pgsql -c \
  '[ -d ${PGDATA} ] && exec /usr/local/bin/pg_ctl start -s -l ~pgsql/errlog'

Inicio del servidor

Ahora sí que ya lo tenemos todo listo para poder arrancar el servidor "en condiciones". Lo haremos así:

# /usr/local/etc/rc.d/010.pgsql.sh stop
# /usr/local/etc/rc.d/010.pgsql.sh start

Acceder al sistema

Ya podemos entrar a nuestro sistema de bases de datos como un usuario normal. Para ello usaremos la base de datos de prueba que viene preconfigurada:

miuser$ psql template1

Si nos pide la contraseña y todo va bien, ¡enhorabuena! todo ha funcionado correctamente ;)


eldemonio.org El site BSD en Castellano Articles catalogue

Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb

eldemonio.org v 4_2