Está en la página 1de 32

http://www.sobl.org/traducciones/practical-postgres/node31.

html

Contenido

Copyright
Prefacio
A quin va dirigido este Libro?
Estructura de este Libro
Plataforma y Versin Utilizada
Qu se incluye en el CD?
Convenciones usadas en este Libro
Agradecimientos
Comentarios y Cuestiones

I. Introduccin e Instalacin
1. Qu es PostgreSQL?
1.1 Versin Gratuita de Cdigo Abierto (Open Source)
1.2 Productos Comerciales de PostgreSQL
1.3 Cdigo Abierto contra Versiones Comerciales
1.4 Tomar una Decisin
1.5 Soporte Comercial
1.6 Soporte de la Comunidad
1.7 Caractersticas de PostgreSQL
1.8 Por dnde proceder a partir de aqu
2. Instalando PostgreSQL
2.1 Preparndonos para la Instalacin
2.2 Paquetes de Software Requeridos
2.3 Paquetes Opcionales
2.4 10 Pasos para Instalar PostgreSQL
2.4.1 Paso 1: Crear al Usuario 'postgres'
2.4.2 Paso 2: Instalar el Paquete Fuente de PostgreSQL
2.4.3 Paso 3: Configurar el rbol de Fuentes
2.4.4 Paso 4: Compilando el Fuente
2.4.5 Paso 5: Test de Regresin
2.4.6 Paso 6: Instalando los Programas y Libreras Compilados
2.4.7 Paso 7: Estableciendo las Variables de Entorno
2.4.8 Paso 8: Inicializando y Arrancando PostgreSQL
2.4.9 Paso 9: Configurando el script PostgreSQL SysV
2.4.10 Paso 10: Creando una Base de Datos

II. Usando PostgreSQL


3. Autenticacin y Encriptacin
3.1 Autenticacin de Cliente
3.1.1 Autenticacin de Contrasea
3.1.2 El Archivo pg_hba.conf
3.1.3 Estructura del Archivo pg_hba.conf
3.1.4 Ejemplos de entradas pg_hba.conf
3.1.5 El Archivo pg_ident.conf
3.1.6 Fallo en la Autentificacin
3.2 Encriptando Sesiones
3.2.1 Built-in SSL
3.2.2 SSH/OpenSSH
3.2.3 Configurando y Usando Stunnel
3.2.4 Probando

III. Administrando Postgresql


4. Gestin de Usuarios y Grupos
4.1 Gestionando Usuarios
4.1.1 Viendo a los Usuarios
4.1.2 Creando Usuarios
4.1.3 Alterando (Modificando) Usuarios
4.1.4 Eliminando Usuarios
4.2 Manejando Grupos
4.2.1 Creando y Eliminando Grupos
4.2.2 Asociando usuarios con grupos
4.3 Otorgando Privilegios
4.3.1 Comprendiendo el Control de Acceso
4.3.2 Garantizando Privilegios con GRANT
4.3.3 Restringiendo Permisos con REVOKE
4.3.4 Usando Vistas para el Control de Acceso

2. Instalando PostgreSQL
Este capitulo se centra en los requisitos y pasos necesarios para instalar y configurar
PostgreSQL. La mayoría de las capacidades de PostgreSQL no están activas por
defecto. Por ejemplo, el soporte para el lenguaje TCL es una característica que debe ser
explícitamente especificada durante el tiempo de compilación. Como hay muchas otras
características que no están configuradas por defecto, cubriremos los distintos flags y
opciones que puede usar para activarlos cuando compile PostgreSQL. Es importante que
ponga cuidado en la lectura de todos los pasos a seguir en este proceso antes de iniciar
la instalación.

Este capítulo habla de la instalación sobre una plataforma del tipo Linux/UNIX. Nuestra
plataforma de instalacin es Linux, pero estas instrucciones deberan ser compatibles con
la mayora de las plataformas UNIX.

Nota: Aunque PostgreSQL es capaz de correr sobre plataformas Win32, este libro no
cubre la instalacin sobre Windows. La versin Win32 de PostgreSQL requiere el entorno
Cygwin y no operar independientemente dentro de Win32. Aunque Cygwin puede ser til
en muchas situaciones, el uso de PostgreSQL en un entorno Cygwin no est
recomendado.

--------------------------------------------------------------------------------
2.1 Preparndonos para la Instalacin
La instalacin de PostgreSQL no es difcil. Sin embargo, existen unos requisitos de
software que necesitar para la compilacin de PostgreSQL. Todos los requisitos -aparte
del cdigo fuente de PostgreSQL- son herramientas GNU. Si est usando Linux, casi
seguro que todas las utilidades ya estn instaladas. Si est usando un derivado de BSD, tal
como FreeBSD o MacOS X, tendr que descargar las herramientas.

Si se encuentra con que ha olvidado alguno de los componentes requeridos, primero


mire en el sitio web de su distribucin en busca de los paquetes; de cualquier forma,
puede descargarlas desde \url{http://www.gnu.org}. Tambin es esencial que tenga
suficiente espacio en disco disponible para descomprimir el cdigo fuente en el sistema
de archivos donde lo va a instalar. Los requisitos de espacio en disco se disctuen en la
seccin denominada ``Espacio en Disco''.

2.2 Paquetes de Software Requeridos


Seguramente ya tendr la mayora de paquetes de software requeridos instalados en su
sistema, si no todos ellos. Estos paquetes son los siguientes:

GNU make
GNU make es comnmente conocido como gmake en los sistemas no basados en GNU,
pero es normalmente conocido como make en sistemas basados en GNU, como en
Linux. Por consistencia, nos referiremos a l como gmake durante el resto del libro.

Recomendamos usar al menos gmake versin 3.76.1 o superior cuando compile


PostgreSQL. Para verificar la existencia y correcto nmero de versin de gmake, teclee el
siguiente comando que se muestra en el Ejemplo 2-1:
Ejemplo 2-1. Verificando GNU make

$ gmake --version
GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
Built for i386-redhat-linux-gnu
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation,
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Report bugs to <bug-make@gnu.org>.

Compilador ISO/ANSI C
Existen numerosos compiladores ISO/ANSI disponibles. El compilador recomendado
para PostgreSQL es el compilador GNU C, aunque PostgreSQL es compilable con
compiladores de diferentes vendedores. Al tiempo de la escritura de ste libro, las
versiones ms conocidas de GCC son la 2.95 y 2.96 (RedHat Linux 7.x y Mandrake
Linux 8.x). Si no tiene actualmente GCC instalado, puede descargarlo visitando el sitio
web de GNU en http://gcc.gnu.org.

Para comprobar la existencia y versin de GCC, introduzca el comando mostrado en el


Ejemplo 2-2.
Ejemplo 2-2. Verificando GCC

$ gcc --version
2.95.3

GNU zip y tar

GNU zip es tambin conocido como gzip. GNU zip es una utilidad de compresin que
puede comprimir y descomprimir archivos. Todos los archivos comprimidos creados
con gzip tienen la extensin .gz. Puede comprobar la existencia del programa gzip con el
comando gzip -version.
Adems de gzip, necesitar un comando copy o tar, una utilidad usada para agrupar varios
archivos y directorios en un nico archivo, as como para desempaquetar estos archivos
sobre el sistema de archivos. Un archivo creado a partir de tar tiene la extensin .tar. Los
archivos que son archivados por tar y comprimidos posteriormente con gzip tienen la
extensin compuesta .tar.gz, como es el caso del fuente de la distribucin PostgreSQL.
Puede comprbar la existencia de tar con el comando tar -version.

Ejemplo 2-3. Verificando gzip y tar

$ gzip --version
gzip 1.3
(1999-12-21)
Copyright 1999 Free Software Foundation
Copyright 1992-1993 Jean-loup Gailly
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
Compilation options: DIRENT UTIME STDC_HEADERS HAVE_UNISTD_H
HAVE_MEMORY_H HAVE_STRING_H
Written by Jean-loup Gailly.

$ tar --version
tar (GNU tar) 1.13.17
Copyright 2000 Free Software Foundation, Inc.
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute it under the terms of the GNU General Public License;
see the file named COPYING for details.
Written by John Gilmore and Jay Fenlason.

2.3 Paquetes Opcionales


Los siguientes son paquetes opcionales que puede desear instalar:

Librera GNU Readline


La librera GNU Readline incremente enormemente la utilidad de psql, el cliente de
consola en lnea de comandos estandard de PostgreSQL. Aade toda la funcionalidad
estandard de la librera GNU Readline a la lnea de comandos psql, tal como poder
fcilmente modificar, editar y recibir informacin histrica de comandos con las teclas de
flecha y la capacidad de buscar en el histrico de comandos (tambin conocido como
reverse-i-search). Si la librera Readline ya est instalada en su sistema, el proceso de
configuracin automticamente compilar el soporte Readline con psql.

Nota: Puede no necesitar este paquete si tiene NetBSD, ya que NetBSD tiene la librera
libedit, la cual proporciona compatibilidad con Readline.
OpenSSL
OpenSSL es una implementacin de cdigo abierto de los protocolos SSL/TLS. OpenSSL
es normalmente usado con utilidades como OpenSSH y Apache-SSL. PostgreSQL
puede hacer uso de OpenSSL para conectividad encriptada entre la aplicacin psql cliente
y el motor PostgreSQL. Tambin puede usar OpenSSL si desea utilizar Stunnel.
Encontrar ms informacin sobre OpenSSL en http://www.openssl.org. La instalacin y
configuracin de Stunnel para usarlo con PostgreSQL se discute en el Captulo 8.
Tcl/Tk
Tcl/Tk es una combinacin entre lenguaje de programacin y herramienta grfica. Aunque
no cubriremos el uso de Tcl con PostgreSQL, s cubriremos el uso de PgAccess, la cual
est escrita en Tcl. Si desea utilizar la aplicacin PgAccess necesitar instalar el software
Tcl/Tk. El sitio web de Tcl/Tk es http://tcl.activestate.com.
Ant/JDK
El JDK es el Java Development Kit (Kit de Desarrollo de Java). Se requiere para el
desarrollo con Java; adems, es necesario tambin por PostgreSQL si usted desea dar
soporte JDBC. Ant es una herramienta basada en Java (algo as como gmake) que tambin
es requerida para el soporte JDBC. El JDK puede ser desacargado desde
http://java.sun.com/j2se/index.html, y Ant desde
http://jakarta.apache.org/ant/index.html.
Espacio en Disco
PostgreSQL no necesita un usi intensivo de recursos de disco. De hecho, en comparacin
con otros productos tales como Oracle, PostgreSQL podra considerarse hasta liviano.
Sin embargo, PostgreSQL es una base de datos, y como cualquier base de datos, los
requerimientos crecern a medida que incremente el uso de PostgreSQL.

Sobre una mquina Linux media, necesitar aproximadamente 50 MB de disco duro para
desempaquetar el cdigo fuente, y otros 60 MB para compilarlo. Si selecciona ejecutar
los tests de regresin, necsitar 30 MB adicionales. Dependiendo de las opciones de
configuracin que elija, PostgreSQL puede tomar de 8 a 15 MB de espacio en disco, una
vez instalado.
Nota: Recuerde que los requisitos de espacio en disco de PostgreSQL crecern a medida
que usted use el sistema. Asegrese de planificar con anticipacin la cantidad de datos que
va a almacenar.
Intentar instalar sobre un sistema con evidentes carencias de espacio en disco es
potencialmente peligroso. Antes de instalar PostgreSQL, recomendamos que compruebe
su sistema de archivos para asegurarse de que tiene suficiente espacio en disco en la
particin sobre la cual pretende instalar (p.ej., /usr/local). Si tiene un sistema basado en
GNU, el comando df debera estar a su disposicin. El ejemplo 2-4 comprueba el espacio
libre en disco, reportando informacin en bloques de 1k.
Ejemplo 2-4. Verificando el Espacio en Disco.
$ df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 2355984 932660 1303644 42% /
/dev/hdb1 4142800 2133160 1799192 54% /home
/dev/hda6 1541680 272540 1190828 19% /usr/local

2.4.1 Paso 1: Crear al Usuario 'postgres'


Cree una cuenta de usuario UNIX para poseer y gestional los archivos de bases de datos
de PostgreSQL. Normalmente, este usuario es denominado postgres, pero usted puede
usar el nombre que desee. Por consistencia para el resto del libro, el usuario postgres ser
considerado el usuario root o superusuario de PostgreSQL.

Necesitar tener privilegios de root para crear al superusuario de PostgreSQL. En una


mquina Linux, puede usar el comando mostrado en el Ejemplo 2-5 para aadir al usuario
postgres.

Ejemplo 2-5. Aadiendo al Usuario postgres.

$ su - -c "useradd postgres"

Aviso: No intente usar al usuario root como superusuario de PostgreSQL. Hacer esto
representa un enorme riesgo de seguridad.

2.4.2 Paso 2: Instalar el Paquete Fuente de PostgreSQL


Una vez haya descargado el fuente de PostgreSQL, debera copiar el paquete con las
fuentes en un directorio temporal de compilacin. Este directorio ser la ruta donde
instalar y configurar PostgreSQL. Dentro de esta ruta, extraer el contenido del archivo
tar.gz y proceder con la instalacin.

Recuerde que esta no ser la localizacin definitiva de los archivos de la base de datos. Es
una localizacin temporal para onfigurar y compilar el paquete con las fuentes. Si se ha
bajado el paquete PostgreSQL desde Internet, es muy probable que no se haya
almacenado en su directorio temporal de compilacin (a menos que lo haya especificado
explcitamente antes de la descarga). Una convencin comn para construir cdigo fuente en
mquinas UNIX y Linux es construir dentro de la ruta /usr/local/src. Seguramente
necesitar permisos de root para acceder a esta ruta. As, los restantes ejemplos en este
captulo implicarn al usuario root hasta que no especifiquemos lo contrario.

Nota: Si usted es usuario de una distribucin comercial de Linux, le aconsejamos que


verifique si ya tiene o no instalado PostgreSQL. En sistemas basados en RPM, tales
como SuSe, Mandrake, o RedHat, esto puede ser hecho usando el siguiente comando:
rpm -qa | grep -i postgres. Si comprueba que tiene PostgreSQL instalado, es muy
probable que no est actualizado. Usted querr descargar e instalar la ltima versin de
PostgreSQL disponible. Una instalacin RPM de PostgreSQL normalmente instala scripts
y programs tales como postmaster y psql en directorio de acceso global. Esto puede
causar conflictos con las versiones de cdigo fuente, as que antes de instalar una nueva
versin, asegrese de eliminar el RPM usando el comando rpm -e <nombre paquete>.
Para desempaquetar el cdigo fuente PostgreSQL sobre un sistema Linux, primero
mueva (o copie desde el CD) el archivo fuente comprimido en /usr/local/src (la mayora
de la gente mueve sus archivos fuente aqu para mantenerlos separados de sus directorios
personales y otras localizaciones). Tras moverlo a la ubicacin del sistema de archivos
donde va a realizar el desempaquetado, use tar para desempaquetar los archivos fuente.
Los comandos para realizar estas acciones se muestran en el Ejemplo 2-6.
Ejemplo 2-6. Desempaquetando el paquete fuente de PostgreSQL

[root@host root]# mv postgresql-7.1.3.tar.gz /usr/local/src


[root@host root]# cd /usr/local/src
[root@host src]# tar -xzvf postgresql-7.1.3.tar.gz
postgresql-7.1.3/
postgresql-7.1.3/ChangeLogs/
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1-7.1.1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1RC1-to-7.1RC2
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1RC2-to-7.1RC3
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1RC3-to-7.1rc4
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta1-to-7.1beta3
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta3-to-7.1beta4
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta4-to-7.1beta5
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta5-to-7.1beta6
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1beta6-7.1RC1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1rc4-7.1
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1.1-7.1.2
postgresql-7.1.3/ChangeLogs/ChangeLog-7.1.2-7.1.3
postgresql-7.1.3/COPYRIGHT
[...]
[root@host root]# chown -R postgres.postgres postgresql-7.1.3

Advierta el ltimo comando utilizado en el Ejemplo 2-6. El comando es chown -R


postgres.postgres postgresql-7.1.3. Este comando garantiza que el propietario del
directorio raz de PostgreSQL es el usuario postgres, lo cual le permitir compilar
PostgreSQL como el usuario postgres. Una vez la extraccin y el cambio de propietario
se hayan producido, podr cambiar al usuario postgres para compilar PostgreSQL,
resultando que todos los archivos compilados automticamente pertenecern a este
usuario.

Para propsitos de referencia, la siguiente lista es una descripcin de las opciones de tar
usadas para extraer la distribucin fuente de PostgreSQL:

x (extraer)
tar extraer desde el el nombre de archivo especificado (en oposicin a la creacin de un
nuevo archivo).
v (verboso)
tar imprimir como salida los archivos que son extrados. Uste puede omitir esta opcin si
no desea ver la lista de archivos desempaquetados.
z (comprimido)
tar usar gunzip para descomprimir el fuente. Esta opcin asume que usted est usando las
herramientas GNU; otras versiones de tar pueden no soportar el flag z. En el caso de
que no est usando herramientas GNU, necesitar descomprimir manualmente el archivo
antes de que pueda desempaquetarlo con tar.
f (archivo)
tar usar el archivo que sigue a continuacin del parmetro f para determinar qu archivo
desempaquetar. En nuestros ejemplos, este archivo es postgresql-7.1.3.tar.gz.
Una vez haya completado la extraccin de los archivos, convirtase en el usuario postgres
y cambie al directorio recin creado (p.ej., /usr/local/src/postgres-7.1.3). El resto de pasos
de nuestra instalacin tendrn lugar en ese directorio.

2.4.3 Paso 3: Configurar el árbol de Fuentes


Antes de la compilación, debe configurar el fuente, y especificar las opciones de
instalacin especficas para sus necesidades. Esto se realiza con el script configure.

El script configure se usa tambin para chequear dependencias del software requerido
para compilar PostgreSQL. Adems de comprobar las dependencias, l crear los archivos
necesarios para usarlos con el comando gmake.

Para usar el script de instalacin por defecto, utilice el siguiente comando: ./configure.
Para especificar las opciones que activarn ciertas caractersticas que no estn disponibles
por defecto, aada la opcin al comandop ./configure. Para una lista de todas las opciones
de configuracin disponibles, use ./configure -help.

Es muy posible que la configuracin que por defecto usa configure no sea la configuracin
que usted necesita. Para una correcta instalacin de PostgreSQL, le recomendamos que
use por lo menos las siguientes opciones:

-with-CXX
Le permite construir programas C++ para usarlos con PostgreSQL, construyendo la
librera libpq++.
-enable-odbc
Le permite conectar PostgreSQL con programas que tienen un driver ODBC compatible
(tal como Microsoft Access).
-enable-multibyte
Le permite usar caracteres multibyte, tales como los caracteres de lenguajes no
anglosajones (p.ej., Kanji).
-with-maxbackends=NMERO
Establece NMERO como el mximo nmero de conexiones admitidas (32, por defecto).
Tambin puede especificar cualquiera de las opciones de configuracin de la siguiente
lista:

-prefix=PREFIJO
Especifica que los archivos deberan ser instalado bajo el directorio especificado en
PREFIJO, en lugar del directorio de instalacin por defecto (/usr/local/pgsql).
-exec-prefix=PREFIJO-EJECUCIN
Especifica que los archivos ejecutables dependientes de la arquitectura deberan ser
instalados bajo el directorio especificado en PREFIJO-EJECUCIN.
-bindir=DIRECTORIO
Especifica que los archivos ejecutables (tales como psql) deberan ser instalador bajo el
directorio especificado en DIRECTORIO.
-datadir=DIRECTORIO
Especifica que los archivos de bases de datos usados por PostgreSQL (as como los
archivos de configuracin de ejemplo) deberan ser instalados en el directorio
especificado en DIRECTORIO. Advierta que el directorio aqu especificado no es
utilizado como un directorio de bases de datos alternativo; es el directorio donde los
archivos de slo lectura usados por el programa sern instalados.
-sysconfdir=DIRECTORIO
Especifica que los archivos de configuracin del sistema deberan ser instalados en el
directorio especificado por DIRECTORIO. Por defecto, estos son ubicados en el
directorio etc dentro del directorio base de instalacin especificado.
-libdir=DIRECTORIO
Especifica que los archivos de libreras deberan ser ubicados en el directorio
especificado por DIRECTORIO. Si usted est ejecutando Linux, este directorio tambin
debera ser especificado en el directorio ld.so.conf.
-includedir=DIRECTORIO
Especifica que los archivos de cabecera de C y C++ deberan ser instalados en el
directorio especificado por DIRECTORIO. Por defecto, los archivos include son
almacenados en el directorio include dentro del directorio base de instalacin.
-docdir=DIRECTORIO
Especifica que los archivos de documentacin deberan ser instalados en el directorio
especificado por DIRECTORIO. Esto no incluye a los archivos man de PostgreSQL.
-mandir=DIRECTORIO
Especifica que los archivos man deberan ser instalados en el directorio especificado por
DIRECTORIO.
-with-includes=DIRECTORIOS
Especifica que la lista de directorios separadas por comas especificados en
DIRECTORIOS deberan ser utilizados en la bsqueda de archivos de cabecera
adicionales.
-with-libraries=DIRECTORIOS
Especifica que la lista de directorios separados por coma especificados en
DIRECTORIOS debera ser utilizada con el propsito de localizar libreras adicionales.
-enable-locale
Activa el soporte local. El uso de soporte local implica una penalizacin en el
rendimiento y slo debera ser activado si usted est en una ubicacin de habla no
anglosajona.
-enable-recode
Activa la librera de traduccin recode.
-enable-multibyte
Activa la codificacin multibyte. Activar esta opcin permite soportar el uso de caracteres
no ASCII; esto es ms til con lenguajes tales como el japons, Koreano y and Chino, que
usan una codificacin no estandard.
-with-pgport=NMERO
Especifica que el nmero de puerto especificado en NMERO debera ser usado como
puerto por defecto para PostgreSQL. Esto puede ser cambiado cuando se inice la
aplicacin postmaster.
-with-maxbackends=NMERO
Establece NMERO como el mximo nmero de conexiones permitidas (32, por defecto).
-with-CXX
Especifica que la librera de la interfaz C++ debera ser compilada durante la instalacin.
Necesitar esta librera si planea desarrollar aplicaciones C++ para usarlas con
PostgreSQL.
-with-perl
Especifica que el mdulo de interfaz Perl para PostgreSQL debera ser compilado durante
la instalacin. Este mdulo necesitar ser instalado en un directorio que usualmente es
propiedad de root,as que necesitar logearse como usuario root para completar la
instalacin si ha escogido esta opcin. Esta opcin de configuracin slo se requiere si usted
planea utilizar el lenguaje procedural pl/Perl.
-with-python
Especifica que el mdulo de la interfaz Python para PostgreSQL debera ser compilado
durante la instalacin. Al igual que en el caso de la opcin -with-perl, necesitar logearse
como el usuario root para completar la instalacin con sta opcin. Esta opcin slo se
requiere si usted planea usar el lenguaje procedural pl/Python.
-with-tcl
Especifica que el soporte Tcl debera ser includo en la instalacin. Esta opcin instalar
aplicaciones PostgreSQL y aplicaciones que requieren Tcl, tales pgaccess (un popular
cliente grfico de bases de datos) y el lenguaje procedural pl/Tcl.
-without-tk
Especifica que el soporte Tcl debera ser compilado sin soporte adicional para Tk, la
herramienta grfica de Tcl. El uso de esta opcin junto con la opcin -with-tcl especifica
que las aplicaciones Tcl de PostgreSQLque requieran Tk (tales como pgtksh y pgaccess)
no deberan ser instaladas.
-with-tclconfig=DIRECTORIO, -with-tkconfig=DIRECTORIO
Especifica que el archivo de configuracin de Tcl o Tk (dependiendo de la opcin)
(tclConfig.sh o tkConfig.sh) estn localizados en el directorio especificado por
DIRECTORIO, en vez de en el directorio por defecto. Estos dos archivos son instalados
por Tcl/Tk, y la informacin dentro de ellos es requerida por los mdulos Tcl/Tk de
PostgreSQL.
-enable-odbc
Activa el soporte para ODBC.
-with-odbcinst=DIRECTORIO
Especifica que el driver ODBC debera buscar en el directorio especificado por
DIRECTORIO para localizar su archivo odbcinst.ini. Por defecto, este archivo se
mantiene en el directorio etc, el cual est localizado en el directorio de la instalacin.
-with-krb4=DIRECTORIO, -with-krb5=DIRECTORIO
Activa el soporte para el sistema de autenticacin Kerberos. El uso de Kerberos no est
cubierto en ste libro.
-with-krb-srvnam=NOMBRE
Especifica el nombre del servicio principal de Kerberos. Por defecto, postgres se
configura como el nombre del servicio principal.
-with-openssl=DIRECTORIO
Activa el uso de SSL para soportar conexiones encriptadas de bases de datos. Para
construir el soporte para SSL, OpenSSL debe ser configurado correctamente e instalado
en el directorio especificado por DIRECTORIO. Esta opcin es requerida si usted planea
usar la herramienta stunnel.
-with-java
Activa el soporte Java/JDBC support. Los paquetes Ant y JDK son requeridos por
PostgreSQL para compilarse correctamente con esta caracterstica activada.
-enable-syslog
Activa el uso del demonio syslog para registro. Necesitar especificar que usted quiere
usar syslog para registro en tiempo de ejecucin si quiere usarlo.
-enable-debug
Activa la compilacin de todas las libreras y aplicaciones de PostgreSQL con smbolos de
depuracin. Esto ralentizar el rendimiento e incrementar el tamao del archivo binario,
pero los smbolos de depuracin son tiles para los desarrolladores a la hora de ayudarles a
diagnosticar errores (bugs) y problemas con los que puedan encontrarse con
PostgreSQL.
-enable-cassert
Activa el chequeo de afirmacin. Esta caracterstica reduce el rendimiento y slo debra ser
utilizada durante el desarrollo de PostgreSQL.
Si usted compila PostgreSQL y se encuentra con que se ha olvidado alguna
caracterstica, puede volver a este paso, reconfigurar, y continuar con los siguientes
pasos para contruir e instalar PostgreSQL. Si selecciona regresar a este paso y
reconfigurar el fuente de PostgreSQL antes de la instalacin, asegrese de ejecutar el
comando gmake clean desde el directorio raz de la instalacin (normalmente,
/usr/local/src/postgresql-[versin]). Esto eliminar cualesquiera archivos objeto y
cualesquiera archivos parcialmente compilados.

2.4.4 Paso 4: Compilando el Fuente


Tras usar el comando configure, puede comenzar a compilar el fuente de PostgreSQL
introduciendo el comando gmake.

Nota: En mquinas Linux, debera usar make en vez de gmake. Los usuarios de BSD
deberan usar gnumake.
Ejemplo 2-7. Compilando el Fuente con GNU make

[postgres@host postgresql-7.1.3]# gmake


gmake -C doc all
gmake[1]: Entering directory /usr/local/src/postgresql-7.1.3/doc'
gmake[1]: Nothing to be done for all'.
gmake[1]: Leaving directory /usr/local/src/postgresql-7.1.3/doc'
gmake -C src all
gmake[1]: Entering directory /usr/local/src/postgresql-7.1.3/src'
gmake -C backend all
gmake[2]: Entering directory /usr/local/src/postgresql-7.1.3/src/backend'
gmake -C utils fmgroids.h
gmake[3]: Entering directory
/usr/local/src/postgresql-7.1.3/src/backend/utils'
[...]
Llegados a este punto, dependiendo de la velocidad de su equipo, tal vez desee tomarse
un caf, porque la compilacin de PostgreSQLpuede durar unnos 10 minutos, una hora, o
incluso ms. Una vez la compilacin haya finalizado, debera aparecerle el siguiente
mensaje:

All of PostgreSQL is successfully made. Ready to install.

2.4.5 Paso 5: Test de Regresin


Los test de regresin son un paso opcional pero muy recomendado. Los tests de regresin
le ayudarn a verificar que PostgreSQL se ejecutar como se espera, una vez compilado el
fuente. Los tests chequean tareas tales como operaciones SQL estandard, as como
capacidades ms potentes de PostgreSQL. Los tests de regresin pueden dar pistas sobre
posibles (pero no necesariamente probables) problemas que puedan surgir durante la
ejecucin de PostgreSQL.

Si decide ejecutar los tests de regresin, hgalo usando el siguiente comando: gmake
check, tal como se muestra en el Ejemplo 2-8.

Ejemplo 2-8. Ejecutando los Tests de Regresin.

[postgres@host postgresql-7.1.3]# gmake check


gmake -C doc all
gmake[1]: Entering directory /usr/local/src/postgresql-7.1.3/doc'
gmake[1]: Nothing to be done for all'.
gmake[1]: Leaving directory /usr/local/src/postgresql-7.1.3/doc'
[...]

El comando gmake check construir una instalacin de testeo de PostgreSQL dentro del
rbol de fuentes, y displayar una lista de todos los chequeos que est realizando. Cuando
cada uno de los tests termine, ser reportado el xito o el fracaso del mismo. Los
elementos que fallen en el chequeo tendrn un mensaje de fallo impreso, en vez del
mensaje de xito ok. Si alguno de los tests falla, gmake check displayar una salida
similar a la encontrada en el Ejemplo 2-9, aunque el nmero de tests que fallen puede ser
mayor en su sistema que el que aparece en el ejemplo.

Ejemplo 2-9. Salida del Chequeo de Regresin

=======================
1 of 76 tests failed.
=======================
The differences that caused some tests to fail can be viewed in the
file ./regression.diffs'. A copy of the test summary that you see
above is saved in the file ./regression.out'.
Los archivos referenciados en el Ejemplo 2-9 (regression.diffs y regression.out) estan
ubicados dentro del directorio raz en src/test/regress. Si el rbol raz est ubicado en
/usr/local/src, la ruta completa a los archivos del directorio sera
/usr/local/src/postgresql-[version]/src/test/regress.

Los tests de regresin no siempre informan de cada posible error. Esto puede ser debido a
inconsistencias en configuraciones de los locales (tales como el soporte de zona de
tiempo), o caractersticas especficas del hardware (tales como resultados de coma
flotante). Como en cualquier aplicacin, asegrese de realizar su propio test de
requerimientos mientras desarrolla con PostgreSQL.

Aviso: No puede ejecutar tests de regresin como el usuario root. Asegrese de ejecutar
gmake check como el usuario postgres.

2.4.6 Paso 6: Instalando los Programas y Libreras Compilados


Una vez haya configurado y compilado el cdigo fuente de PostgreSQL, es la hora de
instalar las libreras, binarios y archivos de datos compilados en una ubicacin ms
adecuada del sistema. Si est actualizando desde una versin anterior de PostgreSQL,
asegrese de salvar su base de datos antes de iniciar este paso. Puede encontrar
informacin sobre copias de seguridad de las bases de datos de PostgreSQL en el Captulo
9.

La instalacin de los archivos compilados se realiza con los comandos explicados en el


Ejemplo 2-10. Cuando se ejecutan de la forma mostrada en el Ejemplo 2-10, el
comando su temporalmente le logea como el usuario root para que pueda ejecutar los
comandos requeridos. Debe tener la contrasea de root para ejecutar los comandos
mostrados en el Ejemplo 2-10.

Nota: Si especific un directorio de instalacin distinto al directorio de instalacin por


defecto en el Paso 3, utilice el directorio que especific, en lugar del directorio
/usr/local/pgsql.
Ejemplo 2-10. El comando de instalacin gmake.

$ su -c "gmake install"
Password:
gmake -C doc install
gmake[1]: Entering directory /usr/local/src/postgresql-7.1.3/doc'
mkdir /usr/local/pgsql
mkdir /usr/local/pgsql/man
mkdir /usr/local/pgsql/doc
mkdir /usr/local/pgsql/doc/html
[...]

$ su -c "chown -R postgres.postgres /usr/local/pgsql"


Password:
El comando su -c "gmake install" instalar el recientemente compilado cdigo fuente en la
estructura de directorio que usted escogi en el Paso 3 con la opcin de configuracin
-prefix, o, si no fue especificado, en el directorio por defecto /usr/local/pgsql. El uso del
comando su -c "chown -R postgres.postgres /usr/local/pgsql" le garantizar que el
usuario postgres es el propietario de los directorio de instalacin de PostgreSQL. El uso
del comando su -c le permite saltarse un paso, logendose como el usuario root slo
durante la ejecucin del comando.

Si selecciona configurar el fuente de PostgreSQL con la interfaz Perl o Python, pero no


tiene derechos de root, an puede instalar los interfaces manualmente. Utilice los
comandos mostrados en el Ejemplo 2-11 para instalar los mdulos Perl y Python
manualmente.

Ejemplo 2-11. Instalando los mdulos Perl y Python manualmente.

$ su -c "gmake -C src/interfaces/perl5 install"


Password:
Password:
gmake: Entering directory /usr/local/src/postgresql-7.1.3/src/interfaces/perl5'
perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Pg
gmake -f Makefile clean
[...]

$ su -c "gmake -C src/interfaces/python install"


Password:
gmake: Entering directory /usr/local/src/postgresql-7.1.3/src/interfaces/python'
sed -e 's,@libpq_srcdir@,../../../src/interfaces/libpq,g' \
-e 's,@libpq_builddir@,../../../src/interfaces/libpq,g' \
-e 's%@EXTRA_LIBS@% -lz -lcrypt -lresolv -lnsl -ldl -lm -lbsd -lreadline -ltermcap
%g' \
-e 's%@INCLUDES@%-I../../../src/include%g' \
[...]

Tambin querr instalar los archivos de cabecera para PostgreSQL. Esto es importante,
porque la instalacin por defecto slo instalar los archivos de cabecera para el desarrollo
de aplicaciones cliente. Si va a utilizar alguna de las funcionalidades avanzadas de
PostgreSQL, tales como funciones definidas por el usuario o desarrollo de aplicaciones
en C que utilizan la librera libpq, necesitar esta funcionalidad. Para instalar los archivos
de cabecera requeridos, use los comandos mostrados en el Ejemplo 2-12.

Ejemplo 2-12. Instalando todas las cabeceras.

$ su -c "gmake install-all-headers"
Password:
gmake -C src install-all-headers
gmake[1]: Entering directory /usr/local/src/postgresql-7.1.3/src'
gmake -C include install-all-headers
[...]

2.4.7 Paso 7: Estableciendo las Variables de Entorno


El uso de las variables de entorno de PostgreSQL no es requerido. Sin embargo, son
tiles cuando se realizan tareas dentro de PostgreSQL, incluyendo el arranque y parada
de los procesos del postmaster. Las variables de entorno que deberan ser configuradas lo
son para las pginas man y para el directorio bin. Puede hacer esto aadiendo los siguiente
estamentos en el archivo /etc/profile. Esto debera funcionar para cualquier shell basada
en sh, incluyendo las shells bash y ksh.

PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
export PATH MANPATH

Nota: Debe logearse de nuevo en el sistema para una vez haya actualizado el archivo
/etc/profile para que la shell las utilice.
Dependiendo de cmo maneja su sistema las libreras compartidas, puede que necesite
informar al sistema operativo sobre dnde se encuentran las libreras compartidas de su
instalacin de PostgreSQL. Sistemas como Linux, FreeBSD, NetBSD, OpenBSD, Irix,
HP/UX, y Solaris no lo necesitarn.
En una instalacin por defecto, las libreras compartidas se ubican en /usr/local/pgsql/lib
(esto puede ser diferente, dependiendo de que estableciese un cambio con la opcin de
configuracin -prefix). Una de las formas ms comunes de hacer esto es configurar la
variable de entorno LD_LIBRARY_PATH a /usr/local/pgsql/lib. Vea el Ejemplo 2-13
para un ejemplo sobre cmo hacer esto en shells del tipo Bourne, y el Ejemplo 2-14 para
una demostracin sobre cmo hacer esto con csh y tcsh.

Ejemplo 2-13. Configurando LD_LIBRARY_PATH en una shell bash.

$ LD_LIBRARY_PATH=/usr/local/pgsql/lib
$ export LD_LIBRARY_PATH

Ejemplo 2-14. Configurando LD_LIBRARY_PATH en csh y tcsh.

$ setenv LD_LIBRARY_PATH /usr/local/pgsql/lib

2.4.8 Paso 8: Inicializando y Arrancando PostgreSQL


Si est logeado como el usuario root, en lugar de usar el comando su -c de los pasos
anteriores, ahora necesitar logearse como el usuario postgres que usted aadi en el Paso
1. Una vez que se haya logeado como el usuario postgres, Ejecute el comando que se
muestra en el Ejemplo 2-15.

Ejemplo 2-15. Inicializando la base de datos.

$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

La opcin -D en el ejemplo anterior es la localizacin donde los datos sern almacenados.


Esta ubicacin puede tambin ser configurada con la variable de entorno PGDATA. Si ha
configurado la variable de entorno PGDATA, la opcin -D no es necesaria. Si desea
utilizar un directorio diferente para almacenar los archivos de datos, asegrese de que el
usuario postgres puede escribir en ese directorio. Cuando ejecute initdb ver algo similar
a lo que se muestra en el Ejemplo 2-16.

Ejemplo 2-16. Salida de initdb

$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
This database system will be initialized with username "postgres." This user will own
all the data files and must also own the server process.

Creating directory /usr/local/pgsql/data


Creating directory /usr/local/pgsql/data/base
Creating directory /usr/local/pgsql/data/global
Creating directory /usr/local/pgsql/data/pg_xlog
Creating template1 database in /usr/local/pgsql/data/base/1
DEBUG: database system was shut down at 2001-08-24 16:36:35 PDT
DEBUG: CheckPoint record at (0, 8)
DEBUG: Redo record at (0, 8); Undo record at (0, 8); Shutdown TRUE
DEBUG: NextTransactionId: 514; NextOid: 16384
DEBUG: database system is in production state
Creating global relations in /usr/local/pgsql/data/global
DEBUG: database system was shut down at 2001-08-24 16:36:38 PDT
DEBUG: CheckPoint record at (0, 108)
DEBUG: Redo record at (0, 108); Undo record at (0, 0); Shutdown TRUE
DEBUG: NextTransactionId: 514; NextOid: 17199
DEBUG: database system is in production state
Initializing pg_shadow.
Enabling unlimited row width for system tables.
Creating system views.
Loading pg_description.
Setting lastsysoid.
Vacuuming database.
Copying template1 to template0.

Muy bien. Ahora puede iniciar el servidor de bases de datos usando:

/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
\end{verbtaim}

\begin{verbatim}
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

Nota: Puede indicar que PostgreSQL debera usar un directorio distinto especificandi la
localizacin del directorio con la opcin -D. Esta ruta debe ser inicializada a travs de
initdb.
Cuando el comando initdb se haya completado, le proporcionar informacin sobre el
arranque del servidor PostgreSQL. El primer comando displayado iniciar al postmaster
en segundo plano. Una vez introducido el comando como se muestra en el Ejemplo 2-
17, el prompt ser inaccesible hasta que presione CTRL-C en el teclado para parar el
proceso postmaster.
Ejemplo 2-17. Ejecutando postmaster en segundo plano.

$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
DEBUG: database system was shut down at 2001-10-12 23:11:00 PST
DEBUG: CheckPoint record at (0, 1522064)
DEBUG: Redo record at (0, 1522064); Undo record at (0, 0); Shutdown TRUE
DEBUG: NextTransactionId: 615; NextOid: 18720
DEBUG: database system is in production state

Iniciar PostgreSQL en segundo plano no es algo que normalmente se requiera. Le


sugerimos que use el segundo comando displayado. El segundo comando iniciar
postmaster en segundo plano. Utiliza pg_ctl para iniciar el servicio postmaster, tal como
se muestra en el Ejemplo 2-18.

Ejemplo 2-18. Ejecutando postmaster en segundo plano.

$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /tmp/pgsql.log start


postmaster successfully started

La mayor diferencia entre el primer comando y el segundo es que el segundo ejecuta


postmaster en segundo plano, y que redirige cualquier informacin de depuracin a
/tmp/pgsql.log. Para un funcionamiento normal, esto generalmente mejor ejecutar
postmaster en segundo plano.

Nota: La aplicacin pg_ctl puede ser utilizad para arrancar y parar el servidor
PostgreSQL. Vea el Captulo 9 para ms informacin sobre ste comando.

2.4.9 Paso 9: Configurando el script PostgreSQL SysV


El script SysV le permitir un mejor control sobre la base de datos PostgreSQL a travs
del uso del sistema de niveles de ejecucin SysV. El script SysV puede ser utilizado para
iniciar, parar y comprobar el estado de PostgreSQL. Es sabido que funciona en la
mayora de versiones de Linux basadas en Red Hat, incluyendo Mandrake; sin embargo,
debera funcionar en otros sistemas SysV (p.ej.., UnixWare, Solaris, etc.) con mnimas
modificaciones. El script se denomina linux. Para usarlo, primero necesitar copiar el
script linux a su directorio init.d. Puede que requiera permisos de root para hacerlo.

Primero, cambie al directorio donde descomprimi el fuente de PostgreSQL. En nuestro


caso, la ruta a ese directorio es /usr/local/src/postgresql-7.1.3/. Luego, use el comando
cp para copiar el script desde contrib/start-scripts al directorio init.d. El Ejemplo 2-19 le
muestra cmo hacer esto en un sistema Red Hat Linux.

Ejemplo 2-19. Copiando el script linux.

$ cd /usr/local/src/postgresql-7.1.3/
$ su -c "cp contrib/start-scripts/linux /etc/rc.d/init.d/postgresql"

El Ejemplo 2-19 arbitrariamente renombra la nueva copia a postgresql; puede llamarlo


como prefiera, aunque tpicamente es denominado postgresql, o postgres.

Necesitar convertir en ejecutable el script tras copiarlo. Para hacer esto, use el comando
que se muestra en el Ejemplo 2-20.

Ejemplo 2-20. Convirtiendo en ejecutable el script linux.

$ su -c "chmod a+x /etc/rc.d/init.d/postgresql"

No existen requisitos adicionales para usar el script SysV con Red Hat, si no va a usarlo
para arrancar PostgreSQL automticamente (p.ej., si desea usar el script manualmente).
Sin embargo, si desea que el script arranque PostgreSQL automticamente cuando el
ordenador arranque (o cambie niveles de ejecucin), necesitar tener el programa
chkconfig instalado. Si chkconfig est instalado, tambin necesitar aadir las siguientes dos
lneas, incluyendo el smbolo almohadilla (#) al principio del archivo
/etc/rc.d/init.d/postgresql:

# chkconfig: 345 85 15
# description: PostgreSQL RDBMS

Estos nmeros de ejemplo deberan funcionar en su sistema; sin embargo, es bueno


conocer el papel que ellos desempean. El primer grupo de nmeros (345) representa los
niveles de ejecucin en los que PostgreSQL debera ser arrancado. El ejemplo muestra
que se debera iniciar PostgreSQL en los niveles de ejecucin 3, 4, y 5. El segundo grupo
de nmeros (85) representa el orden en el cual PostgreSQL debera ser arrancado dentro
del nivel de ejecucin, en relacin con el resto de programas. Probablemente debiera
mantener este segundo nmero alto, para indicar que debera ser arrancado de lo ltimo en
el nivel de ejecucin. El tercer nmero (15) representa el orden en que PostgreSQL debera
ser cerrado. Es buena idea mantener este nmero lo ms bajo posible, indicando un orden
de cierre que es inverso al de arranque. Como mencionamos anteriormente, el script
dbera funcionar en su sistema con los nmeros proporcionados, pero puede cambiarlos si
es necesario.

Una vez que estas dos lneas hayan sido aadidas al script, puede usar los comandos
mostrados en el Ejemplo 2-21 sobre distribuciones Red Hat y Mandrake Linux para
arrancar la base de datos PostgreSQL. Asegrese de ejecutarlo como el usuario root.

Ejemplo 2-21. Iniciando PostgreSQL con el script SysV.

$ service postgresql start


Starting PostgreSQL: ok
$ service postgresql stop
Stopping PostgreSQL: ok

Nota: Los logs del script SysV redirigen toda la salida de depuracin de PostgreSQL a
/usr/local/pgsql/data/serverlog, por defecto.

2.4.10 Paso 10: Creando una Base de Datos


Ahora que el sistema de bases de datos PostgreSQL est funcionando, tendr la opcin de
usar la base de datos por defecto, template1. Si crea una nueva base de datos, y desea
que sus siguientes bases de datos tengan las mismas opciones de sistema, entonces
debera primero configurar la base de datos template1 para tener esas opciones
disponibles. Por ejemplo, si planea usar el lenguaje PL/pgSQL para programar, entonces
debera instalar el lenguaje PL/pgSQL en template1 antes de usar createdb. Entonces,
cuando use el comando createdb, la base de datos creada heredar los objetos de
template1, y as, heredar el lenguaje PL/pgSQL. Para ms informacin sobre la instalacin
del lenguaje PL/pgSQL en una base de datos, refirase al Captulo 11.

El siguiente paso ser crear una nueva base de datos. Esta ser una simple base de datos de
testeo. No recomendamos usar la base de datos por defecto template1 para propsitos de
testeo. Como no ha creado ningn usuario con permisos de creacin de bases de datos,
tendr que asegurarse de haberse logeado como el usuario postgres cuando aada una
nueva base de datos. Tambin puede crear usuarios que puedan aadir bases de datos, lo
cual es discutido en el Captulo 10. Para crear una nueva base de datos llamada testdb,
introduzca el comando que muestra el Ejemplo 2-22.

Ejemplo 2-22. Creando una base de datos.

$ createdb testdb
CREATE DATABASE

Debera recibir un mensaje que diga CREATE DATABASE, indicando que la creacin de
la base de datos ha sido exitosa. Ahora puede usar la interfaz de lnea de comandos de
PostgreSQL, psql, para acceder a la recin creada base de datos. Para hacer esto,
introduzca el comando mostrado en el Ejemplo 2-23.

Ejemplo 2-23. Accediendo a una base de datos con psql.


$ psql testdb

Ahora puede empezar a introducir comandos SQL (p.ej., SELECT) en el prompt de


psql. Si no est familiarizado con psql, vea el Captulo 4 para una introduccin.

Para verificar que la base de datos est funcionando correctamente, puede usar el
comando mostrado en el Ejemplo 2-24, el cual debera darle la lista de los lenguajes
instalados en la base de datos.

Ejemplo 2-24. Consultando una tabla de sistema.

testdb=# SELECT * FROM pg_language;


lanname | lanispl | lanpltrusted | lanplcallfoid | lancompiler
----------+---------+--------------+---------------+-------------
internal | f |f |0 | n/a
C |f |f |0 | /bin/cc
sql |f |f |0 | postgres
(3 rows)
II. Usando PostgreSQL

3. Autenticacin y Encriptacin
Este captulo documenta los conceptos fundamentales envueltos en la autenticacin y la
encriptacin de una sesin cliente con el servidor PostgreSQL. Esto incluye cmo
configurar correctamente el archivo pg_hba.conf para una variedad de escenarios de
autenticacin, as como unas cuantas formas comunes apra encriptar sus conexiones
clientes.

3.1 Autenticacin de Cliente


La autenticacin de cliente es una caracterstica central para PostgreSQL. Sin ella, podra
sacrificar la conectividad remota, o por el contrario podra permitir que cualquiera
pudiera conectar a su base de datos y recibir y incluso modificar sus datos. PostgreSQL
tiene varios tipos diferentes de autenticacin de cliente a su disposicin. Como
administrador del sitio, usted necesita decidir cul de ellos es mejor para su sistema.

A partir de PostgreSQL 7.1.x, los accesos de clientes basados en mquina (host) se


encuentran especificados en el archivo pg_hba.conf. Los permisos y restricciones
descritos en este archivo no deberan ser confundidos con los permisos de un usuario de
PostgreSQL a los objetos dentro de la base de datos. El archivo pg_hba.conf le permite
establecer el tipo de autenticacin basasda en mquina a ser usada. Esta autenticacin es
realizada antes de que PostgreSQL estblezca una conexin a la base de datos en cuestin,
donde los permisis de usuarios seran relevantes.

Nota: El archivo pg_hba.conf est localizado en el directorio de datos de PostgreSQL


(p.ej., /usr/local/pgsql/data/), y es instalado automticamente con la ejecucin del
comando initdb cuando PostgreSQL es instalado.
La autenticacion de PostgreSQL basada en mquina es flexible, proporcionando una
amplia variedad de opciones de configuracin. Puede restringir los accesos a bases de
datos a mquinas especficas, as como permitir acceso a un rango de direcciones IP
usando mscaras de red. Cada mquina configurada tiene su propio registro de mquina, el
cual es una lnea simple en el archivo pg_hba.conf.
Con estos registros de mquinas, usted puede especificar el acceso tanto a una base de
datos en particular como a todas las bases de datos. Adems, puede requerir a un usuario
desde determinada mquina que se autentifique a travs de la tabla de usuarios de
PostgreSQL para cualificar una conexin.

Dicho simplemente, el archivo pg_hba.conf le permite determinar quin est autorizado


para conectarse a qu bases de datos desde qu mquinas, y para graduar cmo deben probar
su autenticidad para obetner el acceso.

Advertencia: En el caso de la autenticacin remota basada en contrasea, las contraseas


pueden ser transmitidas en texto plano dependiendo de si est o no usando sesiones
encriptadas. Asegrese de comprender cmo est su aplicacin comunicando PostgreSQL
antes de permitir a los usuarios conectar remotamente a una base de datos PostgreSQL.
3.1.1 Autenticacin de Contrasea
Las contraseas permiten a los usuarios PostgreSQL una forma de identificarse a s
mismos y de prevenir a individuos no autorizados la conexin. A partir de PostgreSQL
7.1.x, las contraseas de usuario son almacenadas en un texto plano en la tabla de sistema
pg_shadow. La estructura de esta tabla se ilustra en la Tabla 8-1. Advierta que aunque
que las contraseas son almacenadas como texto plano, slo los superusuarios de
PostgreSQL tienen permiso para ver la tabla pg_shadow.

Tabla 8.1.- La Tabla pg_shadow

Columna Tipo
usename name
usesysid integer
usecreatedb boolean
usetrace boolean
usesuper boolean
usecatupd boolean
passwd text
valuntil abstime

La tabla pg_shadow es una tabla del sistema, y por tanto es accesible desde cualquier
base de datos. Esto significa que los usuarios no estn adscritos a una base de datos
especfica. Si un usuario existe en la tabla pg_shadow, ese usuario estar habilitado para
conectar a cualquier base de datos en el servidor, aunque no necesariamente desde
cualquier mquina remota (depender de su configuracin).

Los usuarios normalemente establecen contraseas en PostgreSQL cuando son creados


(con el comando CREATE USER) o una vez que el usuario ha sido creado (usando el
comando ALTER USER). Alternativamente, usted puede manualmente modificar una
contrasea de usuario usando un estamento UPDATE (para una explicacin ms detallada
sobre definicin de contraseas para usuarios, vea el Captulo 10).

Si una contrasea no es definida, el valor por defecto para el campo contrasea (passwd)
del usuario en la tabla es NULL. Si la autenticacin basada en contrasea es activada en el
archivo pg_hba.conf, los intentos de conexin siempre fallarn para ese usuario user. A la
inversa, si la mquina que establece la conexin es una mquina autorizada (tal como
localhost, por ejemplo), cualquiera desde la mquina autorizada puede conectar como
usuario con una clave NULL. De hecho, las contraseas son ignoradas completamente
para las mquinas autorizadas.

Nota: El comando GRANT le permite restringir o permitir una gran variedad de tipos de
acceso a tablas dentro de una base de datos. Vea el Captulo 10 para ms informacin.
A menos que sus necesidades de seguridad sean muy pequeas, usted no querr usar slo
autenticacin basada en contrasea en su servidor PostgreSQL. Usar ste mtodo para
autenticar usuarios permitir a cualquier usuario vlido acceder a cualquier base de datos
del sistema, y la autenticacin con una clave de texto plano puede resultar en que
usuarios no autorizados adquieran contraseas de usuarios. Si desea conectar a su base de
datos desde Internet de alguna forma, le sugerimos que lea las siguientes secciones.
Cubre el uso del archivo pg_hba.conf y la encriptacin de sesin.

3.1.2 El Archivo pg_hba.conf


Mencionamos antes que el archivo pg_hba.conf permite la autenticacin de cliente entre
el servidor PostgreSQL y la aplicacin cliente. Este archivo consiste en una serie de
entradas, las cuales definen a una mquina y a sus permisos asociados (p.ej., la base de
datos a la que le est permitido conectar, el mtodo de autenticacin a usar, etc).

Cuando una aplicacin solicita una conexin, la peticin especificar un nombre de usuario
PostgreSQL y de base de datos a la cual intenta conectar. Opcionalmente, puede ser
proporcionada una contrasea, dependiendo de la configuracin esperada para la mquina
que conecta.

Nota: PostgreSQL tiene sus propias tablas de usuario y contrseas, las cuales estn
separadas de las cuentas del sistema (operativo). No se requiere que su usuario
PostgreSQL coincida con los usuarios definidos a nivel de sistema operativo.
Cuando PostgreSQL recibe una peticin de conexin chequear el archivo pg_hba.conf
para verificar que la mquina desde la cual la aplicacin est solicitando la conexin tiene
permiso para conectar a la base de datos especificada. Si la mquina que solicita el
acceso tiene permisos de conexin, PostgreSQL comprobar las condiciones que la
aplicacin debe cumplir en orden a una correcta autenticacin. Esto afecta a las
conexiones que son iniciadas localmente as como a las remotas.
PostgreSQL comprobar el mtodo de autenticacin a travs del archivo pg_hba.conf para
cada peticin de conexin. Esta comprobacin es realizada cada vez que una nueva conexin
es solicitada desde el servidor PostgreSQL, as que no necesita reiniciar PostgreSQL tras
aadir, modificar o eliminar una entrada en el archivo pg_hba.conf. El Ejemplo 8-1 es un
ejemplo simple del archivo pg_hba.conf.

Ejemplo 8-1. Un simple archivo pg_hba.conf

\begin{verbatim}
# PostgreSQL HOST ACCESS CONTROL FILE
#

local all trust


host all 127.0.0.1 255.255.255.255 trust
host booktown 192.168.1.3 255.255.255.255 ident sales
host all 192.168.1.4 255.255.255.255 ident audit
\end{verbatim}
Cuando una conexin es inicializada, PostgreSQL lee cada entrada del archivo
pg_hba.conf. Tan pronto como un registro coincidente sea encontrado, PostgreSQL
abandonar la bsqueda y permitir o rechazar la conexin, en base a la entrada encontrada.
Si PostgreSQL no encuentra un registro coincidente, la conexin se aborta igualmente.

Los permisos a nivel de tabla todava se aplican a la base de datos, un en el caso de que
un usuario tenga permisos para conectar a la base de datos. Si usted puede conectar,
pero no puede seleccionar datos de una tabla, puede que tenga que verificar que el
usuario conectado tenga permisos para usar SELECT sobre esa tabla. Usando la
aplicacin de lnea de comando psql, puede comprobar los permisos de las tablas de una
base de datos usando en comando \z. Para cualquier otra interfaz para PostgreSQL, use
la consulta que se muestra en el Ejemplo 8-2 para ver la misma informacin que la
proporcionada por el comando \z.

Ejemplo 8-2. Comprobando Permisos de Usuario

testdb=# SELECT relname as "Relation", relacl as "Access permissions"


testdb-# FROM pg_class
testdb-# WHERE relkind IN ('r', 'v', 'S')
testdb-# AND relname !~ '^pg_'
testdb-# ORDER BY relname;

Relation | Access permissions


----------+----------------------------------
foo | {"=arwR","jdrake=arwR"}
my_list | {"=","jdrake=arwR","jworsley=r"}
(2 rows)

3.1.3 Estructura del Archivo pg_hba.conf


El archivo pg_hba.conf contiene entradas secuenciales que definen las caractersticas
que PostgreSQL debera usar durante el procesode autenticacin del cliente para una
mquina especfica. Este archivo est diseado para ser fcilmente actualizable en funcin de
sus necesidades.

Dentro de este archivo, usted puede asociar una direccin de mquina TCP/IP (o un rango
de direcciones) conuna base de datos en particular (o todas las bases de datos), y uno o
varios mtodos de autenticacin. Tambin puede especificar el acceso para conexiones
locales usando el trmino localhost, o 127.0.0.1, en vez de usar la direccin IP externa del
sistema.

Varias reglas sintcticas se aplican al archivo pg_hba.conf. Primero, usted slo puede
ubicar un registro de mquina por lnea en el archivo. Consecuentemente, los registros de
mquinas no pueden extenderse a varias lneas. Segundo, cada registro de mquina debe
contener mltiples campos, los cuales deben estar separados bien por tabulaciones o bien
por espacios. El nmero de campos en un registro de mquina est directamente
relacionado con el tipo de entrada que est siendo definida. El Ejemplo 8-3 muestra dos
registros de mquina, el primero con los campos separados por espacios, y el segundo
separado mediante tabulaciones.

Ejemplo 8-3. Una entrada vlida en pg_hba.conf con espacios y tabulaciones

host all 127.0.0.1 255.255.255.255 trust


host all 127.0.0.1 255.255.255.255 trust

Se permite el uso de comentarios dentro del archivo pg_hba.conf usando una


almohadilla (#) al principio de cada lnea de comentarioo El Ejemplo 8-4 demuestra su
uso.

Ejemplo 8-4. Comentarios vlidos en pg_hba.conf

# Book Town host entries


#
#
host all 127.0.0.1 255.255.255.255 trust

Aparte del actual formato para cada registro de mquina, hay tres tipos generales
disponibles en el archivo pg_hba.conf (el tipo keyword es siempre la primera palabra en
el registro de mquina):

host
Una entrada host es usada para especificar mquinas remotas que estn autorizadas para
conectar al servidor PostgreSQL. El postmaster de PostgreSQL debe ser ejecutado con
la opcin -i (TCP/IP) para que una entrada de mquina funcione correctamente.
local
Una entrada local es semnticamente lo mismo que una entrada host. Sin embargo, no
necesita especificar una mquina a la que le est permitido conectar. La entrada local es
usada para conexiones de clientes que son iniciadas desde la misma mquina en la que
est operando el servidor PostgreSQL
hostssl
Una entrada hostssl es usada para especificar mquinas (remotas o locales) que estn
autorizadas para conectar al servidor PostgreSQL usando SSL. El uso de SSL le
garantiza que todas las comunicaciones entre el cliente y el servidor estn encriptadas.
Para que esto funcione, tanto el cliente como el servidor deben soportar SSL. El proceso
postmaster debe ser ejecutado con las opciones -l (SSL) y -i (TCP/IP).
Nota: Vea el Captulo 9 para ms informacin sobre cmo iniciar el proceso postmaster con
las apropiadas opciones de tiempo de ejecucin.
El Ejemplo 8-5 ilustra la sintaxis general de cada tipo de registro de mquina disponible
dentro del archivo pg_hba.conf. Advierta que el formato es esencialmente idntico para
cada registro, con la excepcin de que un registro local no requiere una direccin IP o
mscara de red, ya que se asume que la conexin se realiza desde la misma mquina donde
se encuentra en servidor PostgreSQL.

Ejemplo 8-5. Sintaxis de entradas

# Un registro "local".
local database auth_method [ auth_option ]

# un registro "host".
host database ip_addr netmask auth_method [ auth_option ]

# Un registro "hostssl".
hostssl database ip_addr netmask auth_method [ auth_option ]

Nota: Recuerde que cada entrada en el archivo pg_hba.conf debe ser una lnea simple.
No puede usar varias lneas o lneas divididas.
La siguiente lista es una descripcin de las palabras clave para las entradas en el archivo
pg_hba.conf mencionadas anteriormente:

database
Este es el nombre de la base de datos a la que la mquina especificada est autorizada a
conectar. La palabra clave database tiene tres posibles valores:

all
La palabra clave all especifica que el cliente puede conectar a cualquier base de datos
alojada en el servidor PostgreSQL.
sameuser
Especifica que el cliente slo puede conectar a una base de datos en la que coinciden los
nombre de usuarios autenticados de los clientes.
name
Un nombre determinado puede ser especificado, de forma que el cliente slo puede
conectar a la base de datos especificada por ese nombre.
ip_addr, netmask
Los campos ip_addr y netmask especifican una direccin IP, o rango de direcciones, que
estn autorizadas a conectar al servidor PostgreSQL. Dicho rango puede ser especificado
describiendo una red IP con su mscara de red asociada. De lo contrario, para una nica
direccin IP, el campo netmask debera ser establecido a 255.255.255.255.

Si no est seguro sobre cmo especificar una mscara de red, vea el documento Redes en
Linux Como (Previamente Net-3 Como), en la direccin
http://lucas.hispalinux.es/COMO-INSFLUG/COMOs/Redes-En-Linux-Como/, o
consulte con su administrador del sistema.
auth_method
El mtodo de autenticacin especifica el tipo de autenticacin que el servidor debera usar
para un usuario que intenta conectar a PostgreSQL. Lo siguiente es una lista de
opciones disponible para el mtodo auth_method:

trust
El mtodo trust permite a cualquier usuario del host (mquina) definido conectar a una
base de datos PostgreSQL sin el uso de una contrasea, como cualquier usuario
PostgreSQL. Usted est autorizando la autenticacin basada en mquina con el uso de ste
mtodo, y para cualquier usuario de la mquina especificada. Esta es una condicin
insegura si la mquina especificada no es una mquina segura, o proporciona acceso a
usuarios desconocidos para usted.
reject
El mtodo reject automticamente deniega el acceso a PostgreSQL para esa mquina o
usuario. Esta puede ser una configuracin prudente para sitios en los que nadie est
autorizado a conectar a su servidor de bases de datos.
password
El mtodo password especifica que debe existir una contrasea para una conexin de
usuario. El uso de ste mtodo requerir que el usuario que conecta proporcione una
contrasea que coincida con la contrasea encontrada en la tabla global de sistema
pg_shadow para ese nombre de usuario. Si usted usa ste mtodo, la contrasea ser enviada
en texto plano.
crypt
El mtodo crypt es similar al mtodo password. Cuando se usa crypt, la contrasea no es
enviada en texto plano, sino a travs de un formato simple de encriptacin. El uso de ste
mtodo no es muy seguro, pero es mejor que usar el mtodo de contraseas planas.
krb4, krb5
Los mtodos krb4 y krb5 son usados para especificar la versin 4 5 del sistema de
autenticacin Kerberos. La instalacin y configuracin de Kerberos queda fuera del mbito
de ste libro, pero si desea autenticar va Kerberos, estos mtodos estn disponibles.
ident
El mtodo ident especifica que un mapa de identidad debera ser usado cuando una
mquina est solicitando conexiones desde una IP vlida listada en el archivo pg_hba.conf.
ste mtodo requiere una opcin.

La opcin requerida puede ser tanto el trmino especial sameuser, o un mapa nombrado
que es definido dentro del archivo pg_ident.conf. Para ms informacin sobre definicin de
un mapa de identificacin, vea la seccin nominada ``El Archivo pg_ident.conf''.
auth_option
El campo auth_option puede o no ser requerido, en funcin del tipo de mtodo de
autenticacin que sea usado; a partir de PostgreSQL 7.1.x, slo el mtodo ident requiere
una opcin.
Aviso: No le aconsejamos el uso ni de password ni de crypt sin el uso de un mecanismo
externo de encriptacin. Vea la seccin nominada ``Sesiones Encriptadas'' en ste captulo
para ms informacin sobre cmo instalar un mecanismo central de encriptacin para todo su
trfico PostgreSQL.
3.1.4 Ejemplos de entradas pg_hba.conf
Esta seccin contiene una serie de ejemplos que pueden ser usados dentro del archivo
pg_hba.conf. Para empezar, el registro de mquina del Ejemplo 8-6 permite a una nica
mquina con la IP 192.168.1.10 conectarse a cualquier base de datos con cualquier
nombre de usuario, sin el uso de contrasea. Esto se debe a que se ha configurado con los
trminos all y trust, respectivamente.

Ejemplo 8-6. Una Entrada Simple de Mquina

host all 192.168.1.10 255.255.255.255 trust

El Ejemplo 8-7 muestra un registro de mquina que rechazar a todos los usuarios desde
la mquina 192.168.1.10, para cualquier base de datos. Esto es as configurando mediante
el uso de los trminos all y reject la base de datos objeto y el mtodo de autenticacin,
respectivamente.

Ejemplo 8-7. Negacin de Entrada

host all 192.168.1.10 255.255.255.255 reject

El registro de mquina en el Ejemplo 8-8 permitir a cualquier usuario con la IP


192.168.1.10, y una contrasea vlida, conectar a la base de datos template1. La contrasea
ser encriptada durante la autenticacin, debido al uso del trmino crypt.

Ejemplo 8-8. Una sla mquina, una sla entrada de base de datos.

host template1 192.168.1.10 255.255.255.255 crypt

El registro de mquina en el Ejemplo 8-9 permite a una pequea subred de computadoras


acceder a cualquier base de datos, sin la necesidad de contrasea. Esta subred describe a
cualquier IP desde la 192.168.1.1 hasta la 192.168.1.15. De nuevo, si usted no est
seguro de cmo configurar su mscara de red, consulte a su administrador, o lea el Redes
en Linux Como (Previamente Net-3 Como), en la direccin
http://lucas.hispalinux.es/COMO-INSFLUG/COMOs/Redes-En-Linux-Como/.
Ejemplo 8-9. Entrada de conexin de pequea subred.

host all 192.168.1.0 255.255.255.240 trust

Ampliando el uso de las subredes, el registro de mquinas del Ejemplo 8-10 permite a
cualquier mquina del bloque 192.168.1 conectar a la base de datos booktown, sin el uso
de contraseas.

Ejemplo 8-10. Entrada de conexin de red amplia.

host booktown 192.168.1.0 255.255.255.0 trust

Recuerde, como ya vimos en sta seccin, que cada lnea de registro de mquina es leda
secuencialmente desde la primera hasta la ltima. El primer registro que coincida con la
mquina que intenta conectar ser usado. Si no hay coincidencias, la conexin es denegada.

3.1.5 El Archivo pg_ident.conf


Cuando se especifica el trmino ident como mtodo de autenticacin de registros de
mquina, PostgreSQL usa el archivo pg_ident.conf para mapear el nombre de
identificacin de usuario a un nombre de usuario de PostgreSQL. El nombre de
identificacin de usuario es el nombre proporcionado por el servicio de conexin de
cliente identd (RFC 1413), el cual es requerido para identificar el nombre de la cuenta
de sistema que est iniciando la conexin. Este mtodo es similar al mtodo trust, pero
restringe el acceso en base al nombre de identificacin del usuario.

Tal como se indica en la especificacin del protocolo ident , ``El Protocolo de


Identificacin no est indicado como protocolo de autorizacin o de control de acceso''. Se
trata slo de un mtodo til de identificacin para mayor seguridad, mecanismos de control,
y no est pensado com control seguro para un amplio array de mquinas externas. Esto se
debe a que un demonio identd simplemente retorna un nombre de usuario arbitrario
describiendo al actual usuario del sistema. Por ejemplo, permitir al usuario jworsley
desde un subred completa o una direccin IP podra creara un serio riesgo de seguridad,
porque cualquiera con una mquina en dicha subred podra crear un usuario llamado
jworsley y convertirse como resultado en usuario ``autorizado''.

El archivo pg_ident.conf debera ubicarse en la misma ruta que el archivo pg_hba.conf.


Este debera ser la ruta definida por la variable de entorno PGDATA (p.ej.,
/usr/local/pgsql/data). Al igual que el archivo pg_hba.conf, los cambios en el archivo
pg_ident.conf no requieren reiniciar PostgreSQL.
El contenido de pg_ident.conf asocia nombres de usuarios identificados con nombres de
usuarios PostgreSQL a travs de definiciones denominadas mapas de identificacin. Esto
es til para aquellos usuarios cuyos nombres de usuario de sistema no coinciden con sus
nombres de usuario de PostgreSQL. Debe recordar algunas reglas cuando defina y use
un mapa de identificacin, y son las siguientes:

Cada miembro del mapa de identificacin es definido en una nica lnea, la cual asocia un
nombre mapeado con un nombre de identifiacin de usuario y su traslacin a un nombre
de usuario PostgreSQL.
El archivo pg_ident.conf puede contener mltiples nombres de mapas. Cada grupo de
lneas simples con el mismo nombre de mapa asociativo es considerado como un nico
mapa.
El archivo pg_hba.conf determina los tipos de conexiones que relacionan a los usuarios
en este archivo.
Una nica lnea para definir un mapa de identificacin consiste en tres elementos: el
nombre del mapa, el nombre de usuario que se identifica, y su traslacin a nombre de
usuario en PostgreSQL. Esta sintaxis es introducida como sigue, donde cada elemento
est separado por espacios o tabulaciones:

nombre_mapa nombre_identidad nombre_postgresql

nombre_mapa
El nombre de mapa usdo en el archivo pg_hba.conf para referirse al mapa de
identificacin.
nombre_identidad
El nombre identificativo de usuario, el cual es generalmente el nombre de usuario del
sistema que intenta establecer una conexin a la base de datos. Este es el nombre
proporcionado por el demonio identd, el cual debe ser ejecutado en el sistema al cual se
intenta conectar.
nombre_postgresql
El nombre de usuario de la base de datos que est autorizado para nombre identificativo
de usuario. Usted puede especificar varias lneas con el mismo nombre de identidad,
pero con diferentes nombres postgresql, en orden a permitir a un mismo usuario del
sistema acceder a varias cuentas, lo cual no necesariamente ha de estar referido a la
misma base de datos.
Como ejemplo, suponga que el servidor de la Ciudad del Libro (Book Town) tiene una
serie de cuentas de sistema denominadas jdrake, jworsley y auditor, usadas por dos
vendedores y por un auditor interno, respectivamente.
Puede que desee crear un par de mapas de identidad para estos dos grupos de usuarios.
Suponga que la estacin detrabajo del departamento de ventas tiene la direccin IP
192.168.1.3, y que slo necesita acceso a la base de datos booktown, mientras que la
estacin de trabajo del departamento de auditora tiene la direccin IP 192.168.1.4, y
requiere acceso a todas las bases de datos. Este escenario podra resultar en un archivo
pga_hba.conf, tal como el mostrado en el Ejemplo 8-11.

Ejemplo 8-11. Una configuracin de identidad en un archivo pg_hba.conf

host booktown 192.168.1.3 255.255.255.255 ident sales


host all 192.168.1.4 255.255.255.255 ident audit

Esta configuracin de acceso de mquinas establece que la mquina de ventas puede


conectar a la base de datos booktown usando un mapa de identificacin llamado sales, y
que la estacin de trabajo de auditora puede conectar a cualquier base de datos usando un
mapa de identificacin llamado audit. Cada uno de estos mapas debe ser configurado
dentron del archivo pg_ident.conf. El Ejemplo 8-12 demuestra dicha configuracin.

Ejemplo 8-12. Una configuracin de pg_ident.conf

# MAP IDENT POSTGRESQL_USERNAME


sales jdrake sales
sales jworsley sales
audit auditor sales
audit auditor postgres

El archivo mostrado en el Ejemplo 8-12 permite a los usuarios de sistema jdrake o


jworsley conectar como el usuario PostgreSQL sales, y permite al usuario de sistema
llamado auditor conectar a PostgreSQL tanto como el usuario sales o el usuario
postgres.

Nota: Es posible que un nombre de usuario identificativo sea mapeado a mltiples


usuarios PostgreSQL. Esto se ilustra en el Ejemplo 8-12 con el usuario auditor.
Si slo usar la identidad para identificar a sus usuarios remotos, no necesita usar el
archivo pg_ident.conf. Puede usar en su lugar el trmino especial sameuser en el archivo
pg_hba.conf, en lugar de usar un mapeado de nombres.
De nuevo, esto es similar al mtodo real, sin embargo la identidad sameuser restringe las
conexiones basadas en el nombre de usuario proporcionado por identd. Proporcionar un
nombre de usuario PostgreSQL para conectar (p.ej., con el flag -U en psql) que es
diferente al nombre enviado por identd resultar en un fallo de conexin.

El uso del mapeado sameuser se demuestra en el Ejemplo 8-13.


Ejemplo 8-13. Una configuracin sameuser

host booktown 192.168.1.0 255.255.255.0 ident sameuser

El registro de mquina del Ejemplo 8-13 permite a cualquier mquina en el bloque de red
192.168.1 conectar a la base de datos booktown, usando el nombre de usuario
PostgreSQL que coincide con el nombre de usuario proporcionado por identd. El trmino
sameuser causa que PostgreSQL implcitamente compare el solicitado nombre de
usuario PostgreSQL contra el nombre proporcionado por identd.

También podría gustarte