Introducción a PostgreSQL

Vamos a describir el proceso de instalaci�n de PostgreSQL para Linux. En nuestro caso hemos utilizado la distribuci�n RedHat 8.0. RedHat utiliza un sistema de gesti�n de paquetes denominado RPM que permite instalar f�cilmente el gestor de base de datos. Adem�s PostgreSQL viene incluido en la distribuci�n est�ndar por lo que simplemente hemos de instalar los paquetes que nos interesen:

[jav@cable213a078 jav]$ rpm
-Uvh postgresql-7.2.2-1.i386.rpm

En caso de no usar distribuciones basadas en RPM o simplemente por gusto, podemos bajar el c�digo fuente de PostgreSQL de su web. Una vez bajado, lo descomprimimos,

[jav@cable213a078 jav]$ tar xvzf
postgresql-7.2.2-1.tar.gz

nos movemos al directorio resultante y ejecutamos el script de configuraci�n.

[jav@cable213a078 postgresql]$ 
./configure

NOTA: Si algo va mal, o tiene necesidades especiales (un directorio diferente del est�ndar, compilaci�n para otras arquitecturas...) deber�a ejecutar

[jav@cable213a078 postgresql]$ ./configure --help

y observar la salida.

Si todo ha ido bien, es hora de compilar. Para ellos ejecutar�amos

[jav@cable213a078 postgresql]$ make

y si no hay errores, nos logueamos como root y ejecutamos

[root@cable213a078 postgresql]# make install

Y ya tenemos PostgreSQL instalado en nuestro equipo.

.�Poniendo en marcha el servidor

Veamos ahora c�mo hacer funcionar el servidor de base de datos. Lo primero es fijar la variable de entorno que almacenar� la ruta hasta el directorio donde guardaremos la informaci�n de la base de datos:

[jav@cable213a078 postgresql]$ export PGDATA=/el/path/deseado/data

En nuestro caso:

[jav@cable213a078 postgresql]$ export PGDATA=/home/jav/db/data

El siguiente paso es crear las estructuras necesarias para iniciar el servidor de la base de datos. Esto se consigue con la orden initdb:

[jav@cable213a078 postgresql]$ initdb
The files belonging to this database system will be owned by user "jav".
This user must also own the server process.

Fixing permissions on existing directory /home/jav/db/data... ok
creating directory /home/jav/db/data/base... ok
creating directory /home/jav/db/data/global... ok
creating directory /home/jav/db/data/pg_xlog... ok
creating directory /home/jav/db/data/pg_clog... ok
creating template1 database in /home/jav/db/data/base/1... ok
creating configuration files... ok
initializing pg_shadow... ok
enabling unlimited row size for system tables... ok
creating system views... ok
loading pg_description... ok
vacuuming database template1... ok
copying template1 to template0... ok

Success. You can now start the database server using:

    /usr/bin/postmaster -D /home/jav/db/data
or
    /usr/bin/pg_ctl -D /home/jav/db/data -l logfile start

Siguiendo las instrucciones que amablemente nos da initdb iniciamos el servidor, a�adiendo los par�metros -i (para admitir conexiones TCP/IP, ya lo explicaremos m�s adelante) y -o para obtener formato de fechas europeo en nuestra base de datos:

[jav@cable213a078 db]$ /usr/bin/postmaster -o -i -D /home/jav/db/data &

Tras algunos mensajes de depuraci�n, tenemos el servidor corriendo en nuestra m�quina. Ahora crearemos una base de datos para ver que la cosa marcha:

[jav@cable213a078 db]$createdb pepa
CREATE DATABASE

Como nos hemos quedado un poco fr�os con la respuesta de PostgreSQL vamos a ver si podemos hacer algo con esta base de datos:

[jav@cable213a078 db]$ psql pepa
Welcome to psql, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit


pepa=# create table provincias(prefijo integer, nombre varchar(20));
CREATE

pepa=# insert into provincias values(987, 'Le�n');
INSERT 16559 1

pepa=# insert into provincias values(91, 'Madrid');
INSERT 16560 1

pepa=# insert into provincias values(923, 'Salamanca');
INSERT 16561 1

pepa=# select * from provincias;
 prefijo |  nombre
---------+-----------
     987 | Le�n
      91 | Madrid
     923 | Salamanca
(3 rows)

Pues bueno, parece que la cosa funciona. Ya tenemos todo en marcha y funcionando. En adelante pasaremos a cosas mayores.

.�Administraci�n remota con OpenSSH

En este apartado veremos c�mo acceder a un m�quina remota (donde est� corriendo la base de datos) de modo seguro para administrarla. Para ello utilizaremos ssh que permite establecer conexiones entre m�quinas de modo que toda la informaci�n que intercambien vaya encriptada.

Lo primero es habilitar el servidor ssh en la m�quina a la que pretendamos acceder.ssh utiliza el puerto 22 para las comunicaciones. Una vez cumplido este paso, ya estamos listos para aceptar conexiones remotas.

Ya hemos configurado lo necesario del lado del servidor. Veamos ahora los pasos necesarios del lado del cliente. Distinguiremos entre m�quinas Linux y Windows. Las IPs que aparecen en los ejemplos son inventadas (obviamente).

  • En Linux (o Unix) posiblemente ya tengamos el cliente ssh instalado. Si no es as� nos dirigiremos al sitio oficial de OpenSSH de donde bajaremos los fuentes, los compilaremos e instalaremos. Dependiendo de la distribuci�n que usemos ser� m�s f�cil o m�s dif�cil encontrar paquetes precompilados que nos ahorren el trabajo.

    Suponiendo que ya tenemos el cliente instalado, es hora de acceder a la m�quina remota. Sin entrar en detalles, diremos que basta con:

    [jav@cable213a078 jav]$ ssh [email protected]
    [email protected]'s password:
    Esta cuenta aloja el trabajo de BBDD
    Directorios:
    -datos: Contiene los ficheros de la base de datos
    -docbd: Contiene los fuentes de la documentaci�n y la documentaci�n en s�. 
            Ejecute make single-html para documentaci�n en un �nico html o 
    		make multiple-html para documentaci�n en varios html.
    -programa: Contiene el c�digo del programa que acceda a la BBDD
    
    Cualquier duda puede remitirla a [email protected] o 
    [email protected]
    [bbdd@cable213a078 bbdd]$

    Gen�ricamente basta con ssh login@IP y se nos pedira el password. Una vez introducido, ya estaremos trabajando en la m�quina remota y todo lo que hagamos se ejecutar� en ella:

    [bbdd@cable213a078 bbdd]$ ls
    datos  docbd  programa
  • En Windows actuaremos de un modo similar. Lo primero ser� bajar PuTTY, un cliente para conexiones ssh en windows. PuTTY tiene una interfaz amigable, en la que s�lo tendremos que especificar la IP a la que conectarnos en indicar que pretendemos hacer una conexi�n ssh:
    Conectarse con PuTTY

    El aspecto de PuTTY funcionando es similar al de una consola de Unix. Tras un rato trabajando con PuTTY se nos olvidar� que estamos utilizando Windows.

    PuTTY funcionando

    En ocasiones ser� necesario mover archivos de nuestra m�quina local a la remota o viceversa. En Windows existe una aplicaci�n que proporciona una interfaz de usuario a scp (secure copy). Esta aplicaci�n de llama WinSCP y es tambi�n muy sencilla de usar, con una configuraci�n muy intuitiva:

    WinSCP

Hemos descrito herramientas que nos servir�n para conectarnos a la m�quina que aloje la base de datos. Esto ser� �til para administrarla sin estar f�sicamente junto a ella y ayuda a que diferentes personas trabajen sin molestarse (n manos teclean m�s que 2).

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO