Manual de instalación de PostgreSQL 8.x
martes, noviembre 08 2005 @ 12:10 ART
Vistas 6,955
Nota: El sistema operativo que utilizamos para pruebas fue Debian GNU/Linux.1. Descargar del sitio oficial de PostgreSQL http://www.postgresql.org/download/ los fuentes. Al momento de escribir este documento, la versión más reciente de PostgreSQL es la 8.0.4.
2. Suponiendo que el archivo *.tar.bz2 lo colocamos en /usr/local/, lo desempacamos y descomprimimos:
SERVER:~# cd /usr/local
SERVER:/usr/local# bzcat postgresql-8.0.4.tar.bz2 | tar -xvf -
3. Creamos el Makefile, compilamos y copiamos los ejecutables a los lugares apropiados:
SERVER:/usr/local# cd postgresql-8.0.4
SERVER:/usr/local/postgresql-8.0.4# ./configure
SERVER:/usr/local/postgresql-8.0.4# make
SERVER:/usr/local/postgresql-8.0.4# make install
Tip: es recomendable primero hacer un ./configure --help para checar las opciones que podemos especificar como parámetros.
4. Si no ocurrió algún errror, en este momento ya tenemos instalado PostgreSQL. Para correr el servidor de bases de datos, es requisito indispensable que no corra como root, así que primero crearemos un usuario de sistema llamado postgres:
SERVER:~# useradd postgres
Configuramos en el archivo /etc/passwd la línea del usuario que acabamos de crear:
postgres:x:1001:1001::/var/pgsql/data:/bin/bash
Le asignamos un password al usuario con el comando passwd y luego agregamos en el archivo /etc/group el grupo que le asignamos en el /etc/passwd (en este caso 1001):
postgres:x:1001:
5. El siguiente paso es crear un clúster de bases de datos de PostgreSQL (PostgreSQL database cluster), que contendrá las bases de datos que vayamos creando. Al momento de inicializar un clúster de bases de datos de PostgreSQL se tiene que indicar el directorio donde se desea que se cree. El propietario de ese directorio tiene que ser un usuario que no sea root. Como nosotros indicamos en el /etc/passwd que el HOME del usuario postgres es /var/pgsql/data, siguiendo con esa lógica, vamos a indicar que ése sea el directorio donde se localice el clúster de bases de datos. Entonces creamos el directorio y le cambiamos de propietario:
SERVER:~# mkdir -p /var/pgsql/data
SERVER:~# chown postgres /var/pgsql/data
Ahora nos cambiamos al usuario postgres e inicializamos el clúster de bases de datos con el comando initdb:
SERVER:~# su - postgres
postgres@SERVER:~$ /usr/local/pgsql/bin/initdb -D /var/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale C.
fixing permissions on existing directory /var/pgsql/data ... ok
creating directory /var/pgsql/data/global ... ok
creating directory /var/pgsql/data/pg_xlog ... ok
creating directory /var/pgsql/data/pg_xlog/archive_status ... ok
creating directory /var/pgsql/data/pg_clog ... ok
creating directory /var/pgsql/data/pg_subtrans ... ok
creating directory /var/pgsql/data/base ... ok
creating directory /var/pgsql/data/base/1 ... ok
creating directory /var/pgsql/data/pg_tblspc ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 1000
creating configuration files ... ok
creating template1 database in /var/pgsql/data/base/1 ... ok
initializing pg_shadow ... ok
enabling unlimited row size for system tables ... ok
initializing pg_depend ... ok
creating system views ... ok
loading pg_description ... ok
creating conversions ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.
Success. You can now start the database server using:
/usr/local/pgsql/bin/postmaster -D /var/pgsql/data
or
/usr/local/pgsql/bin/pg_ctl -D /var/pgsql/data -l logfile start
6. El siguiente paso es inicializar el servidor de bases de datos. Antes de esto, se recomienda agregar estas líneas al archivo .bash_profile del usuario postgres, para evitar el poner toda la ruta del clúster de bases de datos cada vez que inicializamos el servidor de bases de datos, y también para agregar a nuestro path el directorio donde están los comandos de postgres:
PGDATA=/var/pgsql/data
PATH=/usr/local/pgsql/bin:$PATH
export PATH PGDATA
Tip: Recuerda que el HOME que le asignamos al usuario postgres es /var/pgsql/data, así que el archivo .bash_profile deberá de crearse en este directorio.
Ahora sí, como usuario postgres inicializamos el servidor de bases de datos con el comando pg_ctl:
postgres@SERVER:~$ pg_ctl start
postgres@SERVER:~$ pg_ctl start
postmaster starting
postgres@SERVER:~$ LOG: database system was shut down at 2005-11-02 13:21:57 CST
LOG: checkpoint record is at 0/A38A34
LOG: redo record is at 0/A38A34; undo record is at 0/0; shutdown TRUE
LOG: next transaction ID: 544; next OID: 17230
LOG: database system is ready
7. Listo! ya tenemos PostgreSQL funcionando. Para conectarse a un servidor de base datos PostgreSQL se utiliza el comando psql. Se le pueden pasar muchos parámetros a este comando de la forma psql [OPTIONS]... [DBNAME [USERNAME]]. Para empezar, vamos a conectarnos a nuestro nuevo servidor de bases de datos que acabamos de levantar, y, una vez dentro de la terminal de PostgreSQL, le asignamos un password al usuario privilegiado de postgres:
postgres@SERVER:~$ psql template1
Welcome to psql 8.0.4, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit
template1=# ALTER USER postgres WITH ENCRYPTED PASSWORD 'secret';
ALTER USER
template1=# q
Tip: template1 es el nombre de una de las dos bases de datos que por default se encuentran en el database cluster. Entre otras cosas, la base template1 se utiliza cuando uno crea una base de datos nueva. Para más información, revisa esta sección de la documentación de PostgreSQL.
8. Como pudiste deducir del punto anterior, para salir de la terminal de PostgreSQL se utiliza el comando q. Ahora, estando en la terminal de sistema, vuelve a intentar conectarte (con el comando psql template1). ¿Qué sucedió? ¿Por qué no nos pidió password, si se supone que ya lo habíamos asignado? La respuesta a esto, es que existe un archivo de configuración llamado pg_hba.conf en donde se especifica quién, cómo y a qué puede accesar de nuestro servidor de bases de datos, y por default viene especificado que todas las conexiones locales se acepten sin necesidad de password. Abre este archivo y revísalo detenidamente. Si deseas saber más acerca de cómo funciona la autentificación en PostgreSQL, así como el significado de los campos que conforman los registros de este archivo, revisa esta sección de la documentación de PostgreSQL.
Por lo pronto, supongamos que sólo queremos aceptar conexiones locales y del host con IP 192.168.1.68 (quizás sea donde se encuentre nuestro webserver con nuestra aplicación en PHP que realiza conexiones con nuestro servidor de bases de datos), y que el método de autentificación sea utilizando el algoritmo de encripción MD5. Entonces, el archivo pg_hba.conf contendría las siguientes líneas:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all md5
host all all 192.168.1.68 255.255.255.255 md5
host all all 0.0.0.0 0.0.0.0 reject
Después de haber hecho estos cambios, tenemos que reiniciar el servidor de bases de datos. Vamos a aprovechar también para especificarle el nombre del archivo donde queremos que nos guarde la bitácora (log), ya que anteriormente todos los mensajes se desplegaban en la pantalla y no se guardaban. El nombre del archivo se lo pasamos como parámetro al comando pg_ctl (en este caso el nombre del archivo será log_2005-11-02):
postgres@SERVER:~$ pg_ctl stop
LOG: received smart shutdown request
LOG: shutting down
waiting for postmaster to shut down....LOG: database system is shut down
done
postmaster stopped
postgres@SERVER:~$ pg_ctl start -l log_2005-11-02
postmaster starting
9. Otro archivo importante que se tiene que revisar es el archivo de configuración postgresql.conf. En este archivo se puede configurar el puerto en el que escuchará el servidor, el número máximo de conexiones que permitirá, el uso de los recursos de sistema y las bitácoras, entre otras cosas más. Las opciones que están comentadas son los valores por default. Para cambiar alguna, se tiene que descomentar la línea y especificar el valor nuevo. Si se hace algún cambio, se tiene que reiniciar el servidor de bases de datos.
Tip: Para las versiones 7.x de PostgreSQL, si se desea aceptar conexiones TCP/IP, se tiene que especificar en este archivo la línea tcpip_socket = true.
10. Para conectarse desde otra computadora a nuestro servidor de bases de datos, la computadora debe de tener instalado el cliente de PostgreSQL. Supongamos que la dirección IP del servidor donde acabamos de hacer la instalación de PostgreSQL es 192.168.1.67. Entonces, estando en otra computadora, para conectarnos a nuestro servidor PostgreSQL a la base llamada bd_inventario con el usuario de postgres alopez, lo haríamos de esta manera:
user@HOSTX:~$ psql -h 192.168.1.67 bd_inventario alopez
Tip: En lugar de especificar la IP, también se puede utilizar el nombre de dominio del servidor.
Notas finales:
Para conocer más aspectos de la instalación de PostgreSQL, se recomienda revisar detenidamente su documentación. Lo que seguiría sería hacer pruebas de conexión a bases de datos en PostgreSQL desde algún lenguaje de programación como PHP o Python. Por otro lado, para los que les guste trabajar más con interfaz gráfica y no desde shell, revisen la aplicación pgadmin, es como una mezcla entre el Enterprise Manager y el Query Analyzer de MS SQL Server. A otras personas también les gusta utilizar la aplicación phpPgAdmin, que es muy similar en funcionalidad a phpMyAdmin. Para realizar conexiones utilizando ODBC, el driver que yo he utilizado es el psqlODBC.
Fuentes consultadas:
PostgreSQL Documentation - http://www.postgresql.org/docs/8.0/static/index.html
Por: Dargor
Última actualización: 2005-11-07
Fuente: Nediam.com.mx