Custom Search
Bloggers Activos
Una historia para meditar tonathiu
K3b burning failed asimov
La evolución del Programador mandrake
Darwin no perdió la fe por desarrollar la teoría de la evolución blacksoul
El Dalai Lama dice: vendaval
Religión, fanatísmo o Terrorismo? blacksoul
De regreso a la Mononeurona y probando NetBSD 4.0 luzbel
Dani people's vaio chilicuil
Una Canción Triste vendaval
¡Lo hemos conseguido! der_teufel
Last Download
Segunda Fundación
Segunda Fundación
Continuación del Curso de DB
rnstux
Gentoo Linux 2008.0 released
asarch
Ese elusivo 1%
aarkerio
Tattoo
aarkerio
Libro de Servidores GNU/LINUX Licencia CC
vendaval
Manda al diablo a Telcel
asarch
Asus lanza rival para el iMac
aarkerio
Seguimiento de Cuba...
vendaval
FreeBSD hacking (Kernel Modules Programming)
vendaval
El ACTA se discute en el G8
aarkerio
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
Asesorías Gratuitas
Asesorías Gratuitas

Hacktivism

LinuxChix button

Server Side \ Manual de instalación de PostgreSQL
Server Side
Manual de instalación de PostgreSQL

Este artículo ha sido consultado en 2,113 ocasiones.

Manual de instalación de PostgreSQL

Por: Dargor <dargor@nediam.com.mx>
Última actualización: 2005-11-07


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@PANDRA:~$ 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@PANDRA:~$ 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:



Última actualización: 2007-04-29 10:57:00-05

Printable version

Add comment:



Captcha




Que estas haciendo?
chilicuilchilicuil está:
Gracias por la ayuda rnstux :D
1 day, 2 hours ago

der_teufelder_teufel está:
|-O
1 day, 3 hours ago

rnstuxrnstux está:
checa esto!! agregale lógica y listo. http://tinyurl.com/5s7ttw
2 days ago

rnstuxrnstux está:
WTF?..
2 days ago

chilicuilchilicuil está:
Algun mononeuron sabra como agregar excepciones al firewall de win xp sp2 con vb6?
2 days, 3 hours ago

mandrakemandrake está:
Aarkerio como va el cyber? con linux
2 days, 4 hours ago

Que estuvimos haciendo >>
Chipotle Software

Uso OpenOffice.org
Una vez a la semana
Nunca
Uso otra ofimática
Todos los días
Una vez al mes
Rapiditas
Problemas de Lenguaje en niños
13736 lecturas
Anticoncepción de Emergencia
11550 lecturas
Sexualidad infantil y juvenil
11094 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
8687 lecturas
Sinapsis y exocitosis
8099 lecturas
Mi primer CakePHP, mmmmm cakeee
6365 lecturas
Evolución filética en las hepáticas
5938 lecturas
BASH y Primeros Comandos
4900 lecturas
CakePHP II Active Record
4671 lecturas
Cómo convertirse en hacker
4230 lecturas
Add to Technorati Favorites

ir arriba
Nunca se tendrá un mundo tranquilo hasta que se extirpe el patriotismo en la raza humana. B. Shaw

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer