Вы находитесь на странице: 1из 33

Instalación y configuración de PostgreSQL bajo GNU/Linux

1. Introducción
2. Requerimientos del sistema
3. Proceso de instalación
4. Proceso de configuración
5. Métodos de configuración de la base de datos (forma consola)
6. Métodos de configuración de la base de datos (forma consola)
7. Conclusiones
8. Bibliografía relacionada.

1. Introducción

La utilización de las bases de datos en las empresas ha sido una prioridad y una
necesidad. En ellas se almacena la información de forma organizada, y se puede
recuperar en la misma forma en que se ingresa, y también puede ser utilizado por varios
usuarios dentro del mismo sistema. Usar un sistema de gestión de base de datos (SGBD)
perfecto siempre ha sido una constante para los especialistas en sistemas e informática,
y las versiones actuales de los mejores SGBD han sido diseñados para poder
automatizar la mayoría de los procesos de almacén de datos.

Hay dos corrientes de SGBD: los diseñados por la comunidad de usuarios de


informática y sistemas, y los diseñados por empresas encargadas del área. La mayoría
de ellos pueden ser utilizados en diversos sistemas operativos, principalmente de los tres
más conocidos: Windows, GNU/Linux y MacOS; aunque también pueden ser usados en
diversos SO basados en servidores.

El SGBD que planeo usar en este artículo será PostgreSQL, debido a ser uno de
los más amplios y completos en el universo GNU/Linux, y también el que está bien
documentado en el área. Procederé a instalarlo en un sistema operativo Ubuntu
(distribución GNU/Linux basada en Debian, que ha sido optimizada para ser usada por
usuarios noveles que entran al mundo del Software Libre), lo configuraré y luego usaré
una aplicación denominada PGAdminIII, la más usada en GNU/Linux.

2. Requerimientos del sistema

Para poder utilizar de forma apropiada el gestor de base de datos PostgreSQL hay
que poseer una distribución GNU/Linux (aunque hay un binario para Windows que
funciona de la misma forma). Hay cientos de distribuciones personalizadas a la medida
del usuario promedio; pero en esencia todas vienen casi de la misma rama. En el sitio
http://distrowatch.org hay unas guías que pueden permitir al usuario medio escoger una
distribución a su estilo. La lista de requerimientos para una distribución GNU/Linux no
es muy compleja (a diferencia de Microsoft Windows); a saber:

a) PC IBM o compatible, con procesador Pentium o AMD.


b) Procesador Pentium/AMD con velocidad desde 100 hasta 1GHz. Si hay
más, entonces funcionará mejor.
c) Memoria RAM desde 64 MB hasta 1GB (si tiene más, el rendimiento se
incrementará).
d) Disco duro con espacio desde 100MB hasta 10 GB (dependiendo de lo que
se requiere instalar).
e) Unidad de CD/DVD (depende de la distribución escogida).
f) Conexión a Internet (para bajar paquetes adicionales y actualizar el
sistema en caso de que se requiera).
Para el caso de PostgreSQL es requerido únicamente:
g) Domino de la consola (o terminal).
h) Conocimiento de las instrucciones en GNU/Linux (no imprescindible, si
algo falla, se consulta por Internet las dudas).
i) Conocimiento del manejo de archivos en GNU/Linux (igual que el
anterior).

3. Proceso de instalación

Ahora se procede a instalar el gestor de base de datos en nuestro sistema. Antes es


necesario haber instalado una distribución GNU/Linux en nuestra PC para poder operar.
También es posible instalar los mismos SGBD en Windows, y algunos aditamentos
incluidos; pero para GNU/Linux y otros se deberán instalar por separado.

Supondré que ya ha sido instalada una distribución de GNU/Linux en la PC, por


lo que si no la has realizado ya, puedes buscar en DistroWatch la que más te guste,
bajarla vía web o torrent, grabarla en un CD ó DVD e instalarla. Previamente se debe
salvar la data en otros medios (CD’s ó DVD’s, dispositivos extraíbles, red, disco duro
interno o externo, o incluso otra partición del mismo disco). Si no sabes cómo realizar
este procedimiento, la Web puede ayudarte. Para el caso actual de la instalación usaré
una distribución muy popular: Ubuntu 10.04, pero si quieres otra, el procedimiento se
ejecuta igual. Así que vamos a comenzar:

1. Iniciada la sesión vamos a la consola de terminal y escribimos:


(nota: las instrucciones están escritas tal cual como se ven, por cuestiones de espacio no
se muestran las pantallas. En root@miguel-lt:/home/miguel-lt# se denomina así porque
es el usuario actual: root es el usuario que ejecuta la terminal, @miguel-lt es el nombre
de la PC en la que se ejecuta Linux; y /home/miguel-lt es un directorio. Puedes acceder
al mismo en una ventana cualquiera. Ve a LugaresCarpeta personal, y listo.)
//para poder acceder a la función de root y así instalar y eliminar paquetes.
root@miguel-lt:/home/miguel-lt# sudo aptitude search postgre
p aolserver4-nspostgres - AOLserver 4 module: Postgres connector
p cl-sql-postgresql - CLSQL database backend, PostgreSQL via library
p cl-sql-postgresql-socket - CLSQL database backend, PostgreSQL via sockets
p courier-authlib-postgresql - PostgreSQL support for the Courier authentication
library
p dpm-postgres - Disk Pool Manager (DPM) server with postgres database backend
p dpm-postgres-copyd - DPM copy server with postgres database backend
p dpm-postgres-nameserver - DPM nameserver server with postgres database backend
p dpm-postgres-srmv1 - DPM SRM version 1 server with postgres database backend
p dpm-postgres-srmv2 - DPM SRM version 2 server with postgres database backend
p dpm-postgres-srmv22 - DPM SRM version 2.2 server with postgres database
backend
p dsyslog-module-postgresql - advanced modular syslog daemon - PostgreSQL
support
p eekboek-db-postgresql - PostgreSQL database driver for EekBoek
p freeradius-postgresql - PostgreSQL module for FreeRADIUS server
p gambas2-gb-db-postgresql - The PostgreSQL driver for the Gambas database
component
p gforge-db-postgresql - collaborative development tool - database (using PostgreSQL)
p gforge-shell-postgresql - collaborative development tool - shell accounts (using
PostgreSQL)
v haskell-hdbc-postgresql-doc -
p haskell-hsql-postgresql-doc - API documentation of the hsql-postgresql library for
Haskell
p lfc-postgres - LCG File Catalog (LFC) server with postgres database backend
p libapq-postgresql-dbg - APQ Ada 95 Postgresql Binding Plugin (debug)
p libapq-postgresql1-dev - APQ Ada 95 Postgresql Binding Plugin (development)
p libapq-postgresql3.0 - APQ Ada 95 Postgresql Binding Plugin (library)
p libdataobjects-postgres-ruby1.8 - postgres adapter for libdataobjects-ruby1.8
p libgda-4.0-postgres - PostgreSQL provider for libgda database abstraction library
p libgda3-postgres - PostgreSQL backend plugin for GNOME Data Access library for
GNOME2
p libghc6-haskelldb-hdbc-postgresql-dev- HaskellDB support for the HDBC
PostgreSQL driver
v libghc6-haskelldb-hdbc-postgresql-dev-0.13-fc21d -
p libghc6-haskelldb-hdbc-postgresql-doc - HaskellDB support for the HDBC
PostgreSQL driver; documentation
p libghc6-hdbc-postgresql-dev - PostgreSQL HDBC (Haskell Database Connectivity)
Driver for GHC
p libghc6-hdbc-postgresql-doc - PostgreSQL HDBC (Haskell Database Connectivity)
documentation
p libghc6-hsql-postgresql-dev - PostgreSQL driver of the HSQL library for GHC6
v libghc6-hsql-postgresql-dev-1.7.3-1c1b8 -
p libghc6-hsql-postgresql-prof - PostgreSQL driver of the HSQL library for GHC6;
profiling libraries
v libghc6-hsql-postgresql-prof-1.7.3-1c1b8 -
p libhk-classes-postgres - PostgreSQL driver plugin for libhk-classes
p liblua5.1-sql-postgres-2 - luasql library for the Lua language version 5.1
p liblua5.1-sql-postgres-dev- luasql development files for the Lua language version 5.1
p libpostgresql-ocaml - OCaml bindings to PostgreSQL's libpq (runtime)
p libpostgresql-ocaml-dev - OCaml bindings to PostgreSQL's libpq
v libpostgresql-ocaml-dev-r8oj6 -
v libpostgresql-ocaml-r8oj6 -
p librdf-storage-postgresql - RDF library, PostGreSQL backend
p libsoci-postgresql-gcc - C++ Database Access Library (PostgreSQL backend)
p odbc-postgresql - ODBC driver for PostgreSQL
p openoffice.org-sdbc-postgresql - OpenOffice.org extension for PostgreSQL SDBC
driver
p openser-postgres-module - PostgreSQL database connectivity module for
OpenSER
p perdition-postgresql - Library to allow perdition to access PostgreSQL
based popmaps
p postgresql - object-relational SQL database (supported version)
p postgresql-8.3-orafce - Oracle support functions for PostgreSQL
v postgresql-8.3-pljava -
p postgresql-8.3-pljava-gcj - Java procedural language for PostgreSQL
p postgresql-8.3-plruby - Ruby procedural language for PostgreSQL
p postgresql-8.4 - object-relational SQL database, version 8.4 server
p postgresql-8.4-debversion - Debian version number type for PostgreSQL
p postgresql-8.4-hstore-new - PostgreSQL data type for storing sets of (key,value)
pairs
p postgresql-8.4-ip4r - IPv4 and IPv4 range index types for PostgreSQL 8.4
p postgresql-8.4-pllua - Lua procedural language for PostgreSQL
p postgresql-8.4-plproxy - PL/Proxy is a proxy language used for remote database
p postgresql-8.4-plr - Procedural language interface between PostgreSQL and R
p postgresql-8.4-plsh - PL/sh procedural language for PostgreSQL 8.4
p postgresql-8.4-postgis - geographic objects support for PostgreSQL 8.4
p postgresql-8.4-prefix - Prefix Range module for PostgreSQL
p postgresql-8.4-preprepare - Pre Prepare your Statement server side
p postgresql-8.4-slony1 - replication system for PostgreSQL: PostgreSQL
server plug-in
p postgresql-autodoc - Utility to create a PostgreSQL database schema
overview in HTML, DOT and XML
p postgresql-client - front-end programs for PostgreSQL (supported version)
p postgresql-client-8.4 - front-end programs for PostgreSQL 8.4
p postgresql-client-common - manager for multiple PostgreSQL client versions
p postgresql-common - PostgreSQL database-cluster manager
p postgresql-contrib - additional facilities for PostgreSQL (supported version)
p postgresql-contrib-8.4 - additional facilities for PostgreSQL
p postgresql-doc - documentation for the PostgreSQL database
management system
p postgresql-doc-8.4 - documentation for the PostgreSQL database
management system
p postgresql-filedump-8.3 - Utility to format PostgreSQL files
p postgresql-filedump-8.4 - Utility to format PostgreSQL files
p postgresql-plperl-8.4 - PL/Perl procedural language for PostgreSQL 8.4
p postgresql-plpython-8.4 - PL/Python procedural language for PostgreSQL 8.4
v postgresql-plr -
p postgresql-pltcl-8.4 - PL/Tcl procedural language for PostgreSQL 8.4
p postgresql-server-dev-8.4 - development files for PostgreSQL 8.4 server-side
programming
p postgrey - greylisting implementation for Postfix
p pure-ftpd-postgresql - Pure-FTPd FTP server with PostgreSQL user
authentication
p rt3.8-db-postgresql - PostgreSQL database backend for request-tracker3.8
p ser-postgres-module - PostgreSQL database connectivity module for SER
p sisu-postgresql - SiSU dependencies for use with PostgreSQL database
p spl-postgres - SPL Programming Language -- postgres adapter
p sqlrelay-postgresql - SQL Relay PostgreSQL connection daemon
p tntdb-postgresql1 - PostgreSQL backend for tntdb database access library
root@miguel-lt:/home/miguel-lt#

Ahora vamos a escoger 7 paquetes principales: postgresql, postgresql-8.4,


postgresql-client-8.4, postgresql-common, postgresql-contrib, postgresql-contrib-8.4,
postgresql-doc y éstos a su vez instalarán las demás dependencias; y con ello ya se
habrá instalado el postgresql en Ubuntu ¡Pero espera, que es el primero de 3 pasos!
root@miguel-lt:/home/miguel-lt# sudo aptitude install postgresql postgresql-8.4
postgresql-client-8.4 postgresql-common postgresql-contrib postgresql-contrib-8.4
postgresql-doc
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
libossp-uuid16{a} libpq5{a} postgresql postgresql-8.4 postgresql-client-8.4
postgresql-client-common{a} postgresql-common postgresql-contrib
postgresql-contrib-8.4 postgresql-doc postgresql-doc-8.4{a}
0 paquetes actualizados, 11 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 7257kB de ficheros. Después de desempaquetar se liberarán
52,2MB.
¿Quiere continuar? [Y/n/?] Y
Escribiendo información de estado extendido... Hecho
Des:1 http://ve.archive.ubuntu.com/ubuntu/ lucid/main libossp-uuid16 1.6.2-1ubuntu1
[58,5kB]
Des:2 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main libpq5 8.4.4-
0ubuntu10.04 [80,9kB]
Des:3 http://ve.archive.ubuntu.com/ubuntu/ lucid/main postgresql-client-common 106
[52,2kB]
Des:4 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main postgresql-client-8.4
8.4.4-0ubuntu10.04 [785kB]
Des:5 http://ve.archive.ubuntu.com/ubuntu/ lucid/main postgresql-common 106
[88,3kB]
Des:6 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main postgresql-8.4 8.4.4-
0ubuntu10.04 [3896kB]
Des:7 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main postgresql 8.4.4-
0ubuntu10.04 [14,9kB]
Des:8 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main postgresql-contrib-8.4
8.4.4-0ubuntu10.04 [371kB]
Des:9 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main postgresql-contrib
8.4.4-0ubuntu10.04 [14,8kB]
Des:10 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main postgresql-doc-8.4
8.4.4-0ubuntu10.04 [1891kB]
Des:11 http://ve.archive.ubuntu.com/ubuntu/ lucid-updates/main postgresql-doc 8.4.4-
0ubuntu10.04 [3420B]
Descargados 7257kB en 2min 59s (40,4kB/s).
Preconfigurando paquetes ...
(Leyendo la base de datos ... 00%
147836 ficheros y directorios instalados actualmente.)
Desinstalando linux-headers-2.6.32-21-generic ...
Desinstalando linux-headers-2.6.32-21 ...
Seleccionando el paquete libossp-uuid16 previamente no seleccionado.
(Leyendo la base de datos ... 00%
129430 ficheros y directorios instalados actualmente.)
Desempaquetando libossp-uuid16 (de .../libossp-uuid16_1.6.2-1ubuntu1_i386.deb) ...
Seleccionando el paquete libpq5 previamente no seleccionado.
Desempaquetando libpq5 (de .../libpq5_8.4.4-0ubuntu10.04_i386.deb) ...
Seleccionando el paquete postgresql-client-common previamente no seleccionado.
Desempaquetando postgresql-client-common (de .../postgresql-client-
common_106_all.deb) ...
Seleccionando el paquete postgresql-client-8.4 previamente no seleccionado.
Desempaquetando postgresql-client-8.4 (de .../postgresql-client-8.4_8.4.4-
0ubuntu10.04_i386.deb) ...
Seleccionando el paquete postgresql-common previamente no seleccionado.
Desempaquetando postgresql-common (de .../postgresql-common_106_all.deb) ...
Seleccionando el paquete postgresql-8.4 previamente no seleccionado.
Desempaquetando postgresql-8.4 (de .../postgresql-8.4_8.4.4-
0ubuntu10.04_i386.deb) ...
Seleccionando el paquete postgresql previamente no seleccionado.
Desempaquetando postgresql (de .../postgresql_8.4.4-0ubuntu10.04_all.deb) ...
Seleccionando el paquete postgresql-contrib-8.4 previamente no seleccionado.
Desempaquetando postgresql-contrib-8.4 (de .../postgresql-contrib-8.4_8.4.4-
0ubuntu10.04_i386.deb) ...
Seleccionando el paquete postgresql-contrib previamente no seleccionado.
Desempaquetando postgresql-contrib (de .../postgresql-contrib_8.4.4-
0ubuntu10.04_all.deb) ...
Seleccionando el paquete postgresql-doc-8.4 previamente no seleccionado.
Desempaquetando postgresql-doc-8.4 (de .../postgresql-doc-8.4_8.4.4-
0ubuntu10.04_all.deb) ...
Seleccionando el paquete postgresql-doc previamente no seleccionado.
Desempaquetando postgresql-doc (de .../postgresql-doc_8.4.4-0ubuntu10.04_all.deb) ...
Procesando disparadores para man-db ...
Procesando disparadores para ureadahead ...
ureadahead will be reprofiled on next reboot
Procesando disparadores para doc-base ...
Processing 1 added doc-base file(s)...
Registering documents with scrollkeeper...
Configurando libossp-uuid16 (1.6.2-1ubuntu1) ...

Configurando libpq5 (8.4.4-0ubuntu10.04) ...

Configurando postgresql-client-common (106) ...


Configurando postgresql-client-8.4 (8.4.4-0ubuntu10.04) ...
update-alternatives: usar /usr/share/postgresql/8.4/man/man1/psql.1.gz para
proporcionar /usr/share/man/man1/psql.1.gz (psql.1.gz) en modo automático

Configurando postgresql-common (106) ...


Adding user postgres to group ssl-cert
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
en_au
en_ca
en_gb
en_us
es

Configurando postgresql-8.4 (8.4.4-0ubuntu10.04) ...


Creating new cluster (configuration: /etc/postgresql/8.4/main, data:
/var/lib/postgresql/8.4/main)...
Moving configuration file /var/lib/postgresql/8.4/main/postgresql.conf to
/etc/postgresql/8.4/main...
Moving configuration file /var/lib/postgresql/8.4/main/pg_hba.conf to
/etc/postgresql/8.4/main...
Moving configuration file /var/lib/postgresql/8.4/main/pg_ident.conf to
/etc/postgresql/8.4/main...
Configuring postgresql.conf to use port 5432...
update-alternatives: usar /usr/share/postgresql/8.4/man/man1/postmaster.1.gz para
proporcionar /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) en modo
automático
* Starting PostgreSQL 8.4 database server
[ OK ]

Configurando postgresql (8.4.4-0ubuntu10.04) ...


Configurando postgresql-contrib-8.4 (8.4.4-0ubuntu10.04) ...

Configurando postgresql-contrib (8.4.4-0ubuntu10.04) ...


Configurando postgresql-doc-8.4 (8.4.4-0ubuntu10.04) ...
Configurando postgresql-doc (8.4.4-0ubuntu10.04) ...
Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho

root@miguel-lt:/home/miguel-lt#

Ahora revisa una cosa más antes de seguir al paso 2. Ve a


SistemaAdministraciónMonitor del sistema, y comprueba si postgresql está
iniciado. Dentro de ella ubica la pestaña Procesos, ve al Menú VerTodos los
procesos. Debe hacer POR LO MENOS el proceso postgresql ejecutándose (los demás
depende de éste último). Otra forma de comprobarlo, sin llegar más lejos: dentro de la
terminal que usas escribe esto:
root@miguel-lt:/home/miguel-lt# ps auxw | grep postgre
… y podrás ver algo como esto:
postgres 3111 0.1 1.1 45600 5676 ? S 18:50 0:00
/usr/lib/postgresql/8.4/bin/postgres -D /var/lib/postgresql/8.4/main -c
config_file=/etc/postgresql/8.4/main/postgresql.conf
postgres 3114 0.1 0.3 45732 1572 ? Ss 18:50 0:00 postgres: writer process
postgres 3115 0.1 0.2 45732 1336 ? Ss 18:50 0:00 postgres: wal writer
process
postgres 3116 0.0 0.3 45740 1656 ? Ss 18:50 0:00 postgres: autovacuum
launcher process
postgres 3117 0.0 0.2 13900 1284 ? Ss 18:50 0:00 postgres: stats collector
process
root 3155 0.0 0.1 3336 820 pts/0 S+ 18:59 0:00 grep --color=auto postgre

2. Una vez instalado y visto que se ejecuta, vamos a montar un


servidor para usar en las pruebas del gestor de base de datos. Puedes escoger entre
varias opciones (en el caso de Windows); pero la más recomendada en los servidores
Linux es Apache, así que vamos a instalarlo. De nuevo en la consola, escribe:
root@miguel-lt:/home/miguel-lt# sudo aptitude search apache
p apache2 - Apache HTTP Server metapackage
v apache2-dev -
p apache2-doc - Apache HTTP Server documentation
v apache2-mpm -
p apache2-mpm-event - Apache HTTP Server - event driven model
p apache2-mpm-itk - multiuser MPM for Apache 2.2
p apache2-mpm-prefork - Apache HTTP Server - traditional non-threaded model
p apache2-mpm-worker - Apache HTTP Server - high speed threaded model
p apache2-prefork-dev - Apache development headers - non-threaded MPM
p apache2-suexec - Standard suexec program for Apache 2 mod_suexec
p apache2-suexec-custom - Configurable suexec program for Apache 2 mod_suexec
p apache2-threaded-dev - Apache development headers - threaded MPM
p apache2-utils - utility programs for webservers
p apache2.2-bin - Apache HTTP Server common binary files
p apache2.2-common - Apache HTTP Server common files
p apachetop - Realtime Apache monitoring tool
p gforge-web-apache - transition package to gforge-web-apache2
p gforge-web-apache2 - collaborative development tool - web part (using Apache)
p libapache-admin-config-perl - a Perl module to read/write Apache like configuration
files
p libapache-asp-perl - perl Apache::ASP - Active Server Pages for Apache with
mod_perl
p libapache-authenhook-perl - Perl API for Apache 2.1 authentication
p libapache-authznetldap-perl - Apache-Perl module that enables to authorize a user
with LDAP attributes
p libapache-configfile-perl - Parse an Apache style httpd.conf configuration file
p libapache-db-perl - Run the interactive Perl debugger under mod_perl
p libapache-dbi-perl - Connect apache server to database via perl's DBI
p libapache-dbilogger-perl - Tracks what's being transferred in a DBI database
p libapache-gallery-perl - Apache module to create galleries on-the-fly
p libapache-htpasswd-perl - Manage Unix crypt-style password file
p libapache-mod-auth-kerb - apache module for Kerberos authentication
p libapache-mod-jk-doc - Documentation of libapache2-mod-jk package
p libapache-mod-security - Tighten web applications security for Apache
p libapache-ruby1.8 - Ruby libraries for mod_ruby
p libapache-session-perl - Perl modules for keeping persistent user data across http
requests
p libapache-session-wrapper-perl - A simple wrapper around Apache::Session
p libapache-sessionx-perl - An extented persistence framework for session data
p libapache-singleton-perl - Singleton class for mod_perl
p libapache2-authcassimple-perl - Apache2 module to authentificate trough a CAS
server
p libapache2-authenntlm-perl - Perform Microsoft NTLM and Basic User
Authentication
p libapache2-mod-antiloris - Apache2 module to defend against DoS attacks using
incomplete requests
p libapache2-mod-apparmor - changehat AppArmor library as an Apache module
p libapache2-mod-apreq2 - generic Apache request library - Apache module
p libapache2-mod-auth-cas - CAS authentication module for Apache2
p libapache2-mod-auth-kerb - apache2 module for Kerberos authentication
p libapache2-mod-auth-mysql - Apache 2 module for MySQL authentication
p libapache2-mod-auth-openid - OpenID authentication module for Apache2
p libapache2-mod-auth-pam - module for Apache2 which authenticate using PAM
p libapache2-mod-auth-pgsql - Module for Apache2 which provides pgsql
authentication
p libapache2-mod-auth-plain - Module for Apache2 which provides plaintext
authentication
p libapache2-mod-auth-radius - Apache 2.x module for RADIUS authentication
p libapache2-mod-auth-sys-group - Module for Apache2 which checks user against
system group
p libapache2-mod-authn-sasl - SASL authentication backend provider for Apache
p libapache2-mod-authnz-external - authenticate Apache against external
authentication services
p libapache2-mod-authz-unixgroup - access control based on on unix group
membership for Apache
p libapache2-mod-axis2c - Apache web services engine - apache module
p libapache2-mod-bw - bandwidth limiting module for apache2
p libapache2-mod-chroot - run Apache in a secure chroot environment
p libapache2-mod-defensible - module for Apache2 which provides DNSBL usage
p libapache2-mod-dnssd - Zeroconf support for Apache 2 via avahi
p libapache2-mod-encoding - Apache2 module for non-ascii filename interoperability
p libapache2-mod-evasive - evasive module to minimize HTTP DoS or brute force
attacks
p libapache2-mod-fastcgi - Apache 2 FastCGI module for long-running CGI scripts
p libapache2-mod-fcgid - an alternative module compat with mod_fastcgi
p libapache2-mod-fcgid-dbg - debugging symbols for mod_fcgid
p libapache2-mod-geoip - GeoIP support for apache2
p libapache2-mod-gnutls - Apache module for SSL and TLS encryption with GnuTLS
p libapache2-mod-jk - Apache 2 connector for the Tomcat Java servlet engine
p libapache2-mod-layout - Apache web page content wrapper
p libapache2-mod-ldap-userdir - Apache module that provides UserDir lookups via
LDAP
p libapache2-mod-line-edit - search-and-replace line editor module for apache 2
p libapache2-mod-lisp - An Apache2 module that interfaces with Lisp environments
p libapache2-mod-log-sql - Use SQL to store/write your apache queries logs - Base
p libapache2-mod-log-sql-dbi - Use SQL to store/write your apache queries logs -
DBI interface
p libapache2-mod-log-sql-mysql - Use SQL to store/write your apache queries logs -
MySQL interface
p libapache2-mod-log-sql-ssl - Use SQL to store/write your apache queries logs - SSL
extension
p libapache2-mod-macro - Create macros inside apache2 config files
p libapache2-mod-mime-xattr - Apache2 module to get MIME info from filesystem
extended attributes
p libapache2-mod-mono - Apache module for running ASP.NET applications on
Mono
p libapache2-mod-musicindex - Browse, stream, download and search through
MP3/Ogg/FLAC files
p libapache2-mod-neko - Apache module for running server-side Neko programs
p libapache2-mod-ocamlnet - OCaml application-level Internet libraries - netcgi2
Apache2 connector
p libapache2-mod-passenger - Rails and Rack support for Apache2
p libapache2-mod-perl2 - Integration of perl with the Apache2 web server
p libapache2-mod-perl2-dev - Integration of perl with the Apache2 web server -
development files
p libapache2-mod-perl2-doc - Integration of perl with the Apache2 web server -
documentation
p libapache2-mod-php5 - server-side, HTML-embedded scripting language (Apache 2
module)
p libapache2-mod-php5filter - server-side, HTML-embedded scripting language
(apache 2 filter module)
p libapache2-mod-proxy-html - Apache2 filter module for HTML links rewriting
p libapache2-mod-python - Python-embedding module for Apache 2
p libapache2-mod-python-doc - Python-embedding module for Apache 2 -
documentation
v libapache2-mod-python2.6 -
p libapache2-mod-random - Create random ads, quotes and redirects
p libapache2-mod-removeip - Module to remove IP from apache2's logs
p libapache2-mod-rpaf - module for Apache2 which takes the last IP from the 'X-
Forwarded-For' header
p libapache2-mod-ruby - Embedding Ruby in the Apache2 web server
p libapache2-mod-scgi - Apache module implementing the SCGI protocol
v libapache2-mod-security2 -
p libapache2-mod-shib2 - Federated web single sign-on system (Apache module)
p libapache2-mod-spamhaus - Apache DNSBL module that blocks listed IP addresses
p libapache2-mod-speedycgi - apache2 module to speed up perl scripts by making
them persistent
p libapache2-mod-suphp - Apache2 module to run php scripts with the owner
permissions
p libapache2-mod-vhost-hash-alias - Fast and efficient way to manage virtual hosting
p libapache2-mod-vhost-ldap - Apache 2 module for Virtual Hosting from LDAP
p libapache2-mod-wsgi - Python WSGI adapter module for Apache
p libapache2-mod-xsendfile - Serve large static files efficiently from web
applications
p libapache2-modxslt - XSLT processing module for Apache 2.x based on libxml2
p libapache2-redirtoservname - Apache 2 module to redirect users to the canonical
hostname
p libapache2-reload-perl - Reload Perl modules when changed on disk
p libapache2-request-perl - generic Apache request library - Perl modules
p libapache2-svn - Subversion server modules for Apache
p libapache2-webauth - Apache 2 modules for WebAuth authentication
p libapache2-webkdc - Apache 2 modules for a WebAuth authentication KDC
p libcatalyst-engine-apache-perl - base class for Apache 1.x and 2.x Catalyst engines
p libconfig-apacheformat-perl - use Apache format config files
p libmasonx-request-withapachesession-perl - Session handler in the Mason Request
object
p mahara-apache2 - Electronic portfolio, weblog, and resume builder - apache2
configuration
p mono-apache-server - ASP.NET backend for mod_mono2 Apache module - default
version
p mono-apache-server1 - ASP.NET 1.1 backend for mod_mono Apache module
p mono-apache-server2 - ASP.NET 2.0 backend for mod_mono2 Apache module
p python-apache-openid - OpenID consumer module for Apache
p rt3.8-apache2 - Apache 2 specific files for request-tracker3.8
p torrus-apache - Transitional Package for migration to torrus-apache2
p torrus-apache2 - Universal front-end for Round-Robin Databases (for apache 2.x)

Entre los paquetes mostrados instala apache2, apache2-doc, apache2-utils,


apache2.2-bin, apache2.2-common. Así que ejecútalos: En terminal escribe esto:
root@miguel-lt:/home/miguel-lt# sudo aptitude install apache2 apache2-doc apache2-
utils apache2.2-bin apache2.2-common
…y este es el resultado:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
apache2 apache2-doc apache2-mpm-worker{a} apache2-utils apache2.2-bin
apache2.2-common libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a}
libaprutil1-ldap{a}
0 paquetes actualizados, 10 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 5586kB de ficheros. Después de desempaquetar se usarán 22,6MB.
¿Quiere continuar? [Y/n/?] Y
Escribiendo información de estado extendido... Hecho
Des:1 http://ve.archive.ubuntu.com/ubuntu/ lucid/main libapr1 1.3.8-1build1 [116kB]
Des:2 http://ve.archive.ubuntu.com/ubuntu/ lucid/main libaprutil1 1.3.9+dfsg-3build1
[85,4kB]
Des:3 http://ve.archive.ubuntu.com/ubuntu/ lucid/main libaprutil1-dbd-sqlite3
1.3.9+dfsg-3build1 [27,1kB]
Des:4 http://ve.archive.ubuntu.com/ubuntu/ lucid/main libaprutil1-ldap 1.3.9+dfsg-
3build1 [25,1kB]
Des:5 http://ve.archive.ubuntu.com/ubuntu/ lucid/main apache2.2-bin 2.2.14-5ubuntu8
[2622kB]
Des:6 http://ve.archive.ubuntu.com/ubuntu/ lucid/main apache2-utils 2.2.14-5ubuntu8
[159kB]
Des:7 http://ve.archive.ubuntu.com/ubuntu/ lucid/main apache2.2-common 2.2.14-
5ubuntu8 [290kB]
Des:8 http://ve.archive.ubuntu.com/ubuntu/ lucid/main apache2-mpm-worker 2.2.14-
5ubuntu8 [2364B]
Des:9 http://ve.archive.ubuntu.com/ubuntu/ lucid/main apache2 2.2.14-5ubuntu8
[1482B]
Des:10 http://ve.archive.ubuntu.com/ubuntu/ lucid/main apache2-doc 2.2.14-5ubuntu8
[2257kB]
Descargados 5586kB en 3min 18s (28,2kB/s).
Seleccionando el paquete libapr1 previamente no seleccionado.
(Leyendo la base de datos ... 00%
130944 ficheros y directorios instalados actualmente.)
Desempaquetando libapr1 (de .../libapr1_1.3.8-1build1_i386.deb) ...
Seleccionando el paquete libaprutil1 previamente no seleccionado.
Desempaquetando libaprutil1 (de .../libaprutil1_1.3.9+dfsg-3build1_i386.deb) ...
Seleccionando el paquete libaprutil1-dbd-sqlite3 previamente no seleccionado.
Desempaquetando libaprutil1-dbd-sqlite3 (de .../libaprutil1-dbd-sqlite3_1.3.9+dfsg-
3build1_i386.deb) ...
Seleccionando el paquete libaprutil1-ldap previamente no seleccionado.
Desempaquetando libaprutil1-ldap (de .../libaprutil1-ldap_1.3.9+dfsg-3build1_i386.deb)
...
Seleccionando el paquete apache2.2-bin previamente no seleccionado.
Desempaquetando apache2.2-bin (de .../apache2.2-bin_2.2.14-5ubuntu8_i386.deb) ...
Seleccionando el paquete apache2-utils previamente no seleccionado.
Desempaquetando apache2-utils (de .../apache2-utils_2.2.14-5ubuntu8_i386.deb) ...
Seleccionando el paquete apache2.2-common previamente no seleccionado.
Desempaquetando apache2.2-common (de .../apache2.2-common_2.2.14-
5ubuntu8_i386.deb) ...
Seleccionando el paquete apache2-mpm-worker previamente no seleccionado.
Desempaquetando apache2-mpm-worker (de .../apache2-mpm-worker_2.2.14-
5ubuntu8_i386.deb) ...
Seleccionando el paquete apache2 previamente no seleccionado.
Desempaquetando apache2 (de .../apache2_2.2.14-5ubuntu8_i386.deb) ...
Seleccionando el paquete apache2-doc previamente no seleccionado.
Desempaquetando apache2-doc (de .../apache2-doc_2.2.14-5ubuntu8_all.deb) ...
Procesando disparadores para man-db ...
Procesando disparadores para ufw ...
Procesando disparadores para ureadahead ...
Procesando disparadores para doc-base ...
Processing 1 added doc-base file(s)...
Registering documents with scrollkeeper...
Configurando libapr1 (1.3.8-1build1) ...

Configurando libaprutil1 (1.3.9+dfsg-3build1) ...

Configurando libaprutil1-dbd-sqlite3 (1.3.9+dfsg-3build1) ...


Configurando libaprutil1-ldap (1.3.9+dfsg-3build1) ...
Configurando apache2.2-bin (2.2.14-5ubuntu8) ...
Configurando apache2-utils (2.2.14-5ubuntu8) ...
Configurando apache2.2-common (2.2.14-5ubuntu8) ...
Enabling site default.
Enabling module alias.
Enabling module autoindex.
Enabling module dir.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module status.
Enabling module auth_basic.
Enabling module deflate.
Enabling module authz_default.
Enabling module authz_user.
Enabling module authz_groupfile.
Enabling module authn_file.
Enabling module authz_host.
Enabling module reqtimeout.

Configurando apache2-mpm-worker (2.2.14-5ubuntu8) ...


* Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using
127.0.1.1 for ServerName

[ OK ]

Configurando apache2 (2.2.14-5ubuntu8) ...

Configurando apache2-doc (2.2.14-5ubuntu8) ...


* Reloading web server config apache2
apache2: Could not reliably determine the server's fully qualified domain name, using
127.0.1.1 for ServerName

[ OK ]

Procesando disparadores para libc-bin ...


ldconfig deferred processing now taking place
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho
[N.D.A.: He de aclarar que esto se realizó en una máquina virtual de virtualbox; por lo
que las opciones desde “Configurando apache2-mpm-worker(2.2.14-5ubuntu8)…”
hasta el segundo [OK] son diferentes. En un entorno Linux real, se le solicitará ingresar
algunos datos adicionales, procure escribirlos bien.]

3. Ahora procede a instalar una aplicación gráfica para manejar el


gestor PostgreSQL. Su nombre es PgAdminIII, y nos permitirá utilizar un servidor base
para montar y mostrar las bases de datos que instalemos. De nuevo en la misma
terminal que hemos usado escribe:
root@miguel-lt:/home/miguel-lt# sudo aptitude search pgadmin
…y el resultado será como esto:
p pgadmin3 - graphical administration tool for PostgreSQL
p pgadmin3-data - graphical administration tool for PostgreSQL - documentation
p phppgadmin - web-based administration tool for PostgreSQL

Así que procede a escribir las dos primeras aplicaciones, y dejar que se instalen:
root@miguel-lt:/home/miguel-lt# sudo aptitude install pgadmin3 pgadmin3-data
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
libwxbase2.8-0{a} libwxgtk2.8-0{a} pgadmin3 pgadmin3-data pgagent{a}
0 paquetes actualizados, 5 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 11,8MB de ficheros. Después de desempaquetar se usarán 29,4MB.
¿Quiere continuar? [Y/n/?] Y
Escribiendo información de estado extendido... Hecho
Des:1 http://ve.archive.ubuntu.com/ubuntu/ lucid/universe libwxbase2.8-0 2.8.10.1-
0ubuntu1 [689kB]
Des:2 http://ve.archive.ubuntu.com/ubuntu/ lucid/universe libwxgtk2.8-0 2.8.10.1-
0ubuntu1 [3455kB]
Des:3 http://ve.archive.ubuntu.com/ubuntu/ lucid/universe pgadmin3-data 1.10.2-1
[5535kB]
Des:4 http://ve.archive.ubuntu.com/ubuntu/ lucid/universe pgadmin3 1.10.2-1 [2072kB]
Des:5 http://ve.archive.ubuntu.com/ubuntu/ lucid/universe pgagent 3.0.1-1 [39,1kB]
Descargados 11,8MB en 2min 24s (81,6kB/s).
Seleccionando el paquete libwxbase2.8-0 previamente no seleccionado.
(Leyendo la base de datos ... 00%
133088 ficheros y directorios instalados actualmente.)
Desempaquetando libwxbase2.8-0 (de .../libwxbase2.8-0_2.8.10.1-
0ubuntu1_i386.deb) ...
Seleccionando el paquete libwxgtk2.8-0 previamente no seleccionado.
Desempaquetando libwxgtk2.8-0 (de .../libwxgtk2.8-0_2.8.10.1-0ubuntu1_i386.deb) ...
Seleccionando el paquete pgadmin3-data previamente no seleccionado.
Desempaquetando pgadmin3-data (de .../pgadmin3-data_1.10.2-1_all.deb) ...
Seleccionando el paquete pgadmin3 previamente no seleccionado.
Desempaquetando pgadmin3 (de .../pgadmin3_1.10.2-1_i386.deb) ...
Seleccionando el paquete pgagent previamente no seleccionado.
Desempaquetando pgagent (de .../pgagent_3.0.1-1_i386.deb) ...
Procesando disparadores para doc-base ...
Processing 1 added doc-base file(s)...
Registering documents with scrollkeeper...
Procesando disparadores para man-db ...
Procesando disparadores para desktop-file-utils ...
Procesando disparadores para python-gmenu ...
Rebuilding /usr/share/applications/desktop.es_VE.utf8.cache...
Procesando disparadores para python-support ...
Configurando libwxbase2.8-0 (2.8.10.1-0ubuntu1) ...

Configurando libwxgtk2.8-0 (2.8.10.1-0ubuntu1) ...


Configurando pgadmin3-data (1.10.2-1) ...
Configurando pgadmin3 (1.10.2-1) ...

Configurando pgagent (3.0.1-1) ...


Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho

Listo. Ahora dos puntos antes de continuar. Abre Firefox (sí, porque ese es el
navegador por defecto en la mayoría de las distribuciones, en este caso, Ubuntu) y
escribe en la barra de direcciones esto: http://localhost. Si apache está ejecutándose (lo
cual veremos luego), debe verse esto:

It works!
This is the default web page for this server.

The web server software is running but no content has been added, yet.

En caso de que no se vea, entonces apache no se está ejecutando. Se puede


resolver forzando la ejecución desde el terminal ya abierto. Otra forma de saber si
apache se ejecuta es, desde luego, a través de la terminal, ejecutando:
root@miguel-lt:/home/miguel-lt# ps auxw |grep apache
root 4278 0.0 0.5 5408 2960 ? Ss 19:42 0:00 /usr/sbin/apache2 -k start
www-data 4379 0.0 0.3 5408 1784 ? S 19:42 0:00 /usr/sbin/apache2 -k start
www-data 4381 0.0 0.5 227152 3000 ? Sl 19:42 0:00 /usr/sbin/apache2 -k start
www-data 4382 0.0 0.5 227088 2976 ? Sl 19:42 0:00 /usr/sbin/apache2 -k start
root 4682 0.0 0.1 3336 820 pts/0 S+ 20:12 0:00 grep --color=auto apache

Y luego comprueba si está instalado el pgadmin3. Ve hasta


AplicacionesProgramación y allí lo verás: pgAdminIII. ¡Voila!, ya completamos la
primera parte.

4. Proceso de configuración

Ahora procedo a realizar la configuración de las nuevas bases de datos. Primero,


estando la terminal abierta tipeo:
root@miguel-lt:/home/miguel-lt# su postgres
…y de inmediato cambiará la orden a:
postgres@miguel-lt:/home/miguel-lt$
Pero antes, hay que definirle la contraseña predeterminada. Por defecto, postgres tiene
una contraseña que se genera de forma aleatoria; pero se puede cambiar. En la terminal
ejecuta esta instrucción:
root@miguel-lt:/home/miguel-lt# sudo su postgres -c "psql template1"
psql (8.4.4)
Digite «help» para obtener ayuda.

template1=# ALTER USER postgres WITH PASSWORD sistemas101;


ERROR: error de sintaxis en o cerca de «sistemas101»
LÍNEA 1: ALTER USER postgres WITH PASSWORD sistemas101;
^
template1=# ALTER USER postgres WITH PASSWORD 'sistemas101';
ALTER ROLE
template1=# \q
root@miguel-lt:/home/miguel-lt#

A veces ocurre que no siempre fluyen las cosas de forma adecuada. Por ello
vamos paso a paso. Digita en la terminal sudo su postgres -c "psql template1" Esto hará
dos cosas: 1) Cambiará al superusuario postgres; y
2) Abrirá el aplicativo psql y ejecutará la función template 1.
Desde ella ahora se escribe esto: ALTER USER postgres WITH PASSWORD
'nueva_contraseña'; donde 'nueva_contraseña'; será la clave que digites para el
superusuario postgres. Eso sí, debes mantener las comillas, o te pasará lo que me
sucedió a mí, si observas con detenimiento la parte de arriba. Si se escribió bien, esto se
mostrará:
ALTER ROLE
Lo que dirá que la operación fue un éxito. Si hay un error (como me paso a mí, verás
esto):
ERROR: error de sintaxis en o cerca de «sistemas101» (o algo similar).
Luego se sale del aplicativo con la instrucción \q (que equivale a salir).

Ya que se ha cambiado la clave del usuario postgres, es hora de jugar con su


mecánica. Vamos a ejecutar un paso que es sumamente delicado; y si se hace sin el
menor recato posible se estropeará todo. En la terminal ejecuta:
sudo gedit /etc/postgresql/8.4/main/postgresql.conf.
[PAUSA: El original decía sudo gedit /etc/postgresql/8.2/main/postgresql.conf; pero la
versión estable más actual es la 8.4; por lo que se cambia el directorio a mostrar.] Esto
con la finalidad de ajustar un par de opciones de este archivo. Verás, por defecto estas
configuraciones están prediseñadas para que no se admitan conexiones desde el exterior
hacia nuestro servidor; sin embargo, es necesario modificarlo para que funcionen todos
los accesos.

La primera línea que debes modificar es esta:


#listen_addresses = 'localhost', Quitarle el # y pasar de ‘localhost’ a ‘*’ para que tenga
puerta abierta a todas las conexiones a realizar.
La siguiente línea que debes modificar es esta:
#password_encryption = on, y quitarle el # para tener puerta abierta también. Guarda los
cambios, y en la terminal ejecuta esta instrucción:
root@miguel-lt:/etc/postgresql/8.4/main# sudo /etc/init.d/postgresql-8.4 restart
* Restarting PostgreSQL 8.4 database server [ OK ]
Ojo avizor; porque si haces esto:
root@miguel-lt:/etc/postgresql/8.4/main# sudo /etc/init.d/postgresql-8.2 restart, ésta
será su respuesta: sudo: /etc/init.d/postgresql-8.2: command not found
Así que pendiente con lo que vayas a realizar, que para eso está esta guía.
Ahora viene la parte más interesante: montaje del nuevo usuario.

Para poder crear un nuevo usuario de la base de datos, en la terminal ingresa al


usuario postgres mediante la siguiente instrucción:
root@miguel-lt:/home/miguel-lt# su postgres
postgres@miguel-lt:/home/miguel-lt$

Y con ello ya estás ingresando a la terminal(o consola) bajo el usuario postgres.


Ahora ingresa al nuevo usuario con la siguiente instrucción:
postgres@miguel-lt:/home/miguel-lt$ createuser PRUEBA1

Luego, te toca seguir una simple instrucción:


1: ¿Será el nuevo rol un superusuario? (s/n) |Indica que sí pulsando S y Enter. ¿Es todo?
No, porque hay más cosas interesantes.
Ahora procede a crear otro usuario sin función de superusuario.
postgres@miguel-lt:/home/miguel-lt$ createuser PRUEBA2. En este caso, en la
instrucción anterior pulsamos N y luego Enter. Pero ahora sale esto:
2: ¿Debe permitírsele al rol la creación de bases de datos? (s/n) |Escoge que sí y pulsa S
y luego Enter.
3: ¿Debe permitírsele al rol la creación de otros roles? (s/n) |Escoge también que sí.
Y allí finaliza las funciones.
Ahora crea otro usuario sin función de superusuario; pero también negando todas las
preguntas anteriores:
postgres@miguel-lt:/home/miguel-lt$ createuser PRUEBA3
¿Será el nuevo rol un superusuario? (s/n) n
¿Debe permitírsele al rol la creación de bases de datos? (s/n) n
¿Debe permitírsele al rol la creación de otros roles? (s/n) n

Listo, ahora hay 3 usuarios: dos usuarios comunes y silvestres, y uno con
funciones de administrador. En base a ellos crea las bases de datos que usarán. En la
terminal ingresa el comando createdb “basededatos”; donde el nombre “basededatos” se
lo asignas nosotros; pero sin las comillas. En mi caso:
postgres@miguel-lt:/home/miguel-lt$ createdb USERPRUEBA1
Si todo marcha bien, el proceso concluye sin nada que mostrar; pero si acontece un
error (quien sabe por qué razón) aparecerá la razón del fallo en la terminal.
Uno de los fallos más comunes es este:
root@miguel-lt:/home/miguel-lt# createdb USERPRUEBA2
createdb: no se pudo conectar a la base de datos postgres: FATAL: la autentificaci?n
Ident fall? para el usuario <<root>>
; la razón principal es esta: root@miguel-lt:/home/miguel-lt# createdb
USERPRUEBA2
El usuario root no está facultado a crear procedimientos de usos de base de datos
PostgreSQL; sólo lo puede realizar el usuario postgres.

Ahora bien; puedes administrar las bases de datos de dos formas. Una de ellas es
usando el programa pgAdminIII recién instalado, y la segunda es por la misma terminal
que tienes abierta. He de recordarle que, para usar los procedimientos en pgAdminIII, el
usuario postgres debe estar habilitado; de lo contrario saldrán muchos fallos. Un
aplicativo que puedes utilizar es psql, con funciones y métodos de uso de base de datos
por la consola o terminal.

En la terminal escribe esto:


postgres@miguel-lt:/home/miguel-lt$ psql
psql (8.4.4)
Digite «help» para obtener ayuda.

postgres=#

¿Ya habíamos visto esta instrucción antes? ¡Claro, fue para cambiar la clave del
usuario postgres! Desde este aplicativo podemos tener acceso a las funciones de
creación, modificación, edición y eliminación de todo lo que refiera a la base de datos
PostgreSQL.
5. Implantación del sistema
Primero abre el pgAdminIII en Aplicaciones-->Programación-->pgAdminIII.
Verás que el programa se ve así:

Ahora voy a indicar cómo conectar a un servidor de base de datos.


Previamente les indiqué que debían instalar Apache, para poder alojar las
bases de datos de prueba creadas con el mismo programa. Pues bien, es
hora de darle utilidad.

Primero, ve a File-->Options para cambiar las opciones del programa.


Únicamente vamos a modificar el idioma, así que ve a User Language (en la
pestaña General) y escoge el idioma Español y pulsa Aceptar.
Para validarlo, reinicia el programa, volviendo a Aplicaciones--
>Programación-->pgAdminIII.

En el programa, agrega un servidor para alojar las primeras bases de datos


que vas a utilizar: ve al botón de un enchufe (se denomina Add a connection
from server), y aparecerá un recuadro como se ve aquí:

Ahora bien, ¿qué hacer aquí? Vayamos por partes, voy a resumirlo en las
opciones que se deberán utilizar, las más comunes:
• Nombre: será el nombre del servidor a utilizar. En mi caso, yo escogí
PruebaDB.
• Servidor: será el sitio donde se aloje la(s) base(s) de datos.
• Puerto: el puerto por el que pase la información. Por defecto aparece
5432; pero si editas el archivo postgresql.conf puedes escoger usar
otro puerto.
• SSL: es el modo en el que se encripta la conexión (hay varias
opciones: requerir, preferir, permitir, desactivar, verificar de
autoridad certificante, verificar completo).
• Base de datos de Mantenimiento: método de conexión inicial, que
además contiene adminpack y esquema pgAgent.
• Nombre de usuario: el rol de postrges que se utilizará para la
conexión.
• Contraseña: la clave del rol de postgres elegido para la conexión.
(aquí acoto una cosa: en el comando createuser 'nombredeusuario', visto
anteriormente, se crea sin una contraseña específica, por ello es
recomendable iniciar con el usuario postgres; y luego, usar otros usuarios ya
creados con su propia contraseña).

• Almacenar contraseña (para próximas sesiones). ¡Importante: la


contraseña se graba en un archivo de texto!
• Restaurar env: almacenar y recuperar el entorno de navegación de
pgAdmin. Importante no desactivar nunca esta casilla.
• Restricción DB: limitar las bases de datos y esquemas que se
muestran en pgAdmin. Estas opciones se entiende de forma simple
en el manual de PostgreSQL; no las modificaremos a efectos
prácticos.
• Servicio: parámetros para controlar el servicio (depende del S.O.).
Esta opción tampoco la modificaremos para no cometer error alguno
a la hora de la implementación.
• Conectar ahora: permite iniciar la conexión inmediatamente.
Recomendable desactivar la casilla.
• Color: muestra el servidor conectado de otro color, blanco por
defecto, y otros definidos por el usuario.

Luego de haber modificado las opciones requeridas e insertado los valores


que necesitemos, tal como se ve en la imagen de abajo, pulsamos el botón
Aceptar.
Luego de ello ve al servidor creado al lado izquierdo y pulsa el botón
derecho del ratón, y escoge la opción Conectar. Allí se te pide ingresar la
contraseña del usuario escogido. Es recomendable acordarse del usuario
que se escogió para las pruebas. Por lo general es postgres, por lo que, si no
has cambiado la contraseña, vuelve hasta más arriba de esta guía y revisa
la parte del cambio de contraseña del usuario postgres. En cambio, si has
escogido otro usuario, puedes cambiarlo, acordándote de la contraseña que
posee.

Si todo salió bien, debería verse algo como esto:


En caso contrario, nos saldrá algo como esto:

Es por ello que se debe colocar la clave correcta del usuario que se escogió.

Ahora bien, vamos a proceder a alojar los datos en ella. Primero, un dato
necesita de ciertas variables, que se insertan dentro de una tabla; pero la
tabla se aloja en una base de datos, por lo que debemos crearla primero. Si
te acuerdas de algo, ya creaste una al principio, pero crearemos otra para
hacer las pruebas. Para ello debes haber conectado al servidor. Si te sale
como en la imagen 6, entonces el proceso marcha a la perfección; de lo
contrario, revisa que funcione; luego de ello puedes seguir.
Sobre el icono del servidor (del lado izquierdo) pulsa el signo '+' para abrirlo
y ver sus características. El servidor posee 4 (3 de ellas ya las vimos antes):
base de datos, tablespace, roles de usuario y (la nueva función) roles de
grupo. Ve hasta el icono que dice “Bases de datos” y pulsa con el botón
derecho del ratón y escoge Nueva base de datos. Ahora verás una ventana
como la siguiente:

Entre las opciones a modificar, están:

• Nombre: es la denominación que usará la base de datos (por


cuestiones de simplicidad, se debe evitar espacios, mayúsculas,
acentos y separar con guión bajo: '_').
• Propietario: El usuario (rol) que tendrá derechos especiales sobre la
base de datos.
• Codificado: esquema de codificación (UTF8, LATIN1, WIN1252). Esto
especifica la forma en la que se verán los caracteres dentro de la
base de datos.
• Plantilla: es la plantilla de creación de bases de datos que se utilizará.
Como no poseemos ninguna, se deja el campo en blanco.
• Espacio de tablas: el directorio donde se alojará la base de datos.
Puede ser uno predefinido, o uno que previamente hayamos creado
(pero esta opción se mostrará luego).
• Comentario: puedes escribir notas adicionales sobre la base de datos.
Cuando se muestre el código fuente a usar, esto aparecerá como
comentado, y no será tomado en cuenta por la aplicación; pero puede
ser leído por otro usuario programador.

Una vez escogido lo que se desea escribir en la nueva base de datos (como
se ve en la imagen de abajo), pulsa Aceptar para que se agregue la nueva
base de datos. Pulsa sobre el icono de la misma para que se conecte al
servidor.
El siguiente paso es agregar nuevas tablas a la misma. Si la base de datos
de prueba ya fueron insertadas tablas por la terminal, aparecerán dentro
de la misma; en caso contrario, mostraré cómo agregarlas. Primero pulsa el
signo '+' junto a las bases de datos ya agregadas y se mostrarán sus
funciones principales. Escogeremos Esquemas y veremos de qué se
componen. El esquema de nuestra base de datos de prueba es public, pero
se pueden escoger otros iguales, pulsando sobre el icono de Esquemas con
el botón derecho del ratón y escogiendo Nuevo esquema.

Pero nuestro interés es no redundar demasiado con las informaciones, de


modo que aplicaremos sobre el esquema public los valores que vamos a
insertar. Primero, sobre public haz clic en el signo '+' y veremos las
funciones que utiliza. Aquí podemos observar muchos métodos ya
reconocidos en la introducción a la base de datos: Dominios, Disparadores,
Diccionarios FTS, Secuencias, Tablas, Vistas, Funciones, entre otros. Ahora
haz clic con el botón derecho del ratón sobre el icono public y escoge Nuevo
Objeto-->Nueva Tabla y se abrirá una ventana como esta:

Desde aquí insertarás los datos dentro de la tabla. Pero primero


reconozcamos algunas funciones:

• Nombre: la forma en la que se llamará la tabla (de nuevo, y como en


el caso anterior, evitar espacios, mayúsculas, acentos y separar con
guión bajo '_').
• Propietario: es el usuario (rol) que tendrá derechos especiales para
administrar la tabla .
• Espacio de tabla: es el lugar en el que se alojará la tabla. Por defecto,
este campo debe ir vacío; pero si ya existe, se puede agregar. Pero
yo no lo recomiendo hasta tanto se sepa su utilidad.
• Comentario: Agrega un comentario para que un usuario programador
sepa qué funcionalidad tiene la tabla.

Una vez completada esta parte, pasa a la pestaña Columna, pulsa Añadir y
agrega las variables y los valores que se usarán en la base de datos. Por
cuestiones de simplicidad, escogeré dos variables: nombres/apellidos y
cédula.
Ahora definiremos las restricciones sobre la que se manejarán esos datos, y
escoger entre la clave primaria y la clave foránea:

Una vez que se escoge el nombre, escoge qué escribirle en el campo


nombre, un comentario adicional, y en la pestaña Columna escoger qué
variables usarán la clave primaria. Luego de ello pulsa el botón Aceptar.
Si todo sale bien, ya deberíamos ver la tabla anexada. Si ocurre un error
(que suele ocurrir siempre), es necesario corregirlo para anexar la tabla. Si
no usas clave primaria dentro de la misma, la Sugerencias del Gurú
aparecerán advirtiendo acerca de este fallo.
Ahora vamos a insertarle valores a la tabla ya creada. Para ello busca el
icono con forma de tabla vacía en la barra de herramientas y pulsa sobre el
mismo. Se abrirá un editor de la base de datos, en donde podremos insertar
los valores que requieren las variables.

Como puedes ver en la imagen adjunta, ya hay un valor insertado con


anterioridad. Para agregar otros valores se hace doble clic sobre la celda en
la que se insertará el valor. No está permitido agregar un valor vacío porque
se decidió por la restricción de 'no valores nulos'.

Hay 3 iconos que vamos a utilizar en esta ventana: el icono de diskette (que
representa Guardar), el icono de una papelera (que representa Eliminar), y
el de la flecha roja y verde dando vueltas (que representa la opción
Actualizar).
Aclaratoria: sólo está permitido actualizar, modificar y borrar datos si la
tabla posee una clave primaria.

Hay otras herramientas que nos permitirán mostrar y administrar los datos
ingresados en la base de datos, como por ejemplo, la herramienta de
consulta SQL, que se ingresa por el icono de una hoja y un lápiz. Al pulsar el
botón, se abrirá una ventana de edición SQL

Dentro de la misma, existe un constructor gráfico de consultas, que permite


realizar un diagrama de relaciones entre las variables agregadas. Desde la
misma ventana pulsa la pestaña que se llama, valga la redundancia,
Constructor gráfico de consultas.

6. Métodos de configuración de la base de datos (forma consola)


Ahora veamos algunas formas de crear y administrar las bases de datos vía terminal:
1.-) douglas-morales@douglas-morales-laptop:~$ sudo su
2.-) [sudo] password for douglas-morales: clave de ussuario root
[Esta contraseña es la misma que utilizas para iniciar sesión]
3.-) root@douglas-morales-laptop:/home/douglas-morales#
4.-) root@douglas-morales-laptop:/home/douglas-morales# su
postgres
[Ahora el usuario postgres pasa a dominar la terminal]
5.-) postgres@douglas-morales-laptop:/home/douglas-morales#
6.-) postgres@douglas-morales-laptop:/home/douglas-morales#
createuser
nombre del nuevo root de postgres
7.-) ¿Será el nuevo rol un superusuario? (s/n) s

8.-) postgres@douglas-morales-laptop:/home/douglas-morales#
createdb
nombre de la base de datos
9.-) postgres@douglas-morales-laptop:/home/douglas-morales# exit

10.-) root@douglas-morales-laptop:/home/douglas-morales#
11.1) root@douglas-morales-laptop:/home/douglas-morales# psql
nombre de la base de datos
11.1.1) deberia de pedirde el usuario creado como root y luego
seguidamente el promt deberia ser el del punto 12

11.2.-) postgres@douglas-morales-laptop:/home/douglas-morales# psql


nombre de la base de datos
12.-) nombre de la base de datos=# CREATE TABLE + nombre
de la tabla(tipo de datos + clave primaria)
13.-) nombre de la base de datos=# \d
14.-) nombre de la base de datos=# \d nombre de la tabla

15.-) INSERT INTO nombre de la tabla(tipo de datos + clave


primaria)
CREATE TABLE products(product_id SERIAL,description TEXT,price
DECIMAL);
INSERT INTO products(description,price) VALUES('A test
product', 12.00);

7. Conclusiones

PostgreSQL es un gestor de base de datos multiplataforma, desarrollado en código abierto


para casi todas las plataformas disponibles. La forma de instalación requiere de mucha
precisión, ya que la mayor parte de los paquetes se encuentran es en los repositorios, y siempre
son librerías de las cuales depende la aplicación para subsistir. El proceso de configuración
(tanto por consola como por la parte gráfica) no es complicado; pero tienden a enredarse ciertas
cosas, y por ello hay que vigilar cada parte del procedimiento. Hay ciertos fallos que suelen
surgir, y es por esto que esta guía se ha realizado cuidando cada aspecto a ser tratado. Esta guía
planea ser una introducción al uso de PostgreSQL, que quizás sea utilizada como base para
diversos proyectos en el área de sistemas en el futuro.

Dependiendo de la distribución que se utilice, los paquetes se bajan de una u otra forma,
pero su instalación, y su configuración se realiza de la misma manera, y desarrollar pruebas
sobre una máquina virtual ayuda a aprender los pasos básicos para realizarlos después en un
entorno más realista; por ello, recomiendo el uso de máquinas virtuales de código abierto, como
VirtualBox, de Oracle; o de código cerrado, como VMWare; pero evitando usar el virtualizador
de Microsoft (Virtual PC), porque no es compatible con GNU/Linux

8. Bibliografía relacionada.

Algunos sitios web de referencias para consulta acerca de cómo manejar este gestor son:
 http://www.guia-ubuntu.org/index.php?title=PgAdmin_III
 http://www.guia-ubuntu.org/index.php?title=PostgreSQL
 http://www.arpug.com.ar/trac/wiki/PgAdmin
 http://www.ubuntu-ve.org/node/2044
 http://sonidolibre.wordpress.com/2008/04/17/instalar-postgresql-y-pgadmin-en-ubuntu/
 http://iie.fing.edu.uy/~vagonbar/debian/debian22/postgresql/postgres.htm#CrearBaseDa
tosPrueba
 http://structio.sourceforge.net/guias/servidor_OpenBSD/postgresql.html
 http://perso.wanadoo.es/manel3/chuletas/I-postgresql
 http://luauf.com/2008/05/28/instalar-postgresql-en-ubuntu/
 http://www.gentoo.org/doc/es/postgres-howto.xml
 http://www.virtualbox.org/

Вам также может понравиться