El presente post es una recopilación sobre la administración básica de base de datos con PostgreSQL, aclaro que no soy un experto en la materia, mi intención es que el siguiente material pueda servir a quienes se inician en el tema.
Algunos enlaces oficiales:
http://www.postgresql.org -> sitio oficial
http://www.enterprisedb.com -> soporte comercial
http://pgmag.org -> revista
http://www.postgresql.org.es -> comunidad española
nota
las pruebas del post están testeadas sobre Ubuntu (GNU/Linux).La descarga
las descargas la hacemos desde el apartado download de postgresql.org.
Seleccionas tu plataforma, la arquitectura(32/64bits) y descargas..
También puedes ir directo a enterprisedb.com para descargar el instalador:
- http://www.enterprisedb.com/downloads/postgres-postgresql-downloads
La instalación (para el ejemplo nos bajamos el instalador postgresql-9.1.4-1-linux-x64.run de enterprisedb.com).
1.- primero verificamos si esta instalado,
* echando un vistazo a los procesos:
ps auxww | grep ^postgres
* o chequeando el status, si lo esta, nos mostrara el process ID:
/etc/init.d/postgresql-9.1 status
pg_ctl: server is running (PID: 4449)
pg_ctl: server is running (PID: 4449)
nos indica el PID del servidor que esta levantado contra el cluster.
si no, muestra algo similar a lo siguiente:
root@3ODI-009:/# /etc/init.d/postgresql-9.1 status
bash: /etc/init.d/postgresql-9.1: No existe el archivo o el directorio
bash: /etc/init.d/postgresql-9.1: No existe el archivo o el directorio
2.- nos movemos al directorio donde se encuentre, en mi caso está en el escritorio
cd /home/usuario/Escritorio
- lo hacemos ejecutable
chmod +x postgresql-9.1.4-1-linux-x64.run
(ejecutar la versión de 32 bits o la de 64 dependiendo del sistema operativo instalado)
- lo ejecutamos
sudo ./postgresql-9.1.4-1-linux-x64.run
Clic aquí para mostrar/ocultar imágenes de la instalación
- Se inicia el proceso de configuración previo al de instalación:
- seleccionamos la ruta donde instalaremos PostgreSQL, por defecto lo envía a /opt/
- seleccionamos la ruta donde se instalará el clúster (nuestro directorio de datos):
- se introduce la contraseña que tendrá el usuario postgres:
- se setea el puerto que usara el servidor:
- se selecciona la configuración regional o se deja la que viene por defecto:
-se inicia el proceso de instalación:
-esperamos que culmine..
- listo!!
- seleccionamos la ruta donde instalaremos PostgreSQL, por defecto lo envía a /opt/
- seleccionamos la ruta donde se instalará el clúster (nuestro directorio de datos):
- se introduce la contraseña que tendrá el usuario postgres:
- se setea el puerto que usara el servidor:
- se selecciona la configuración regional o se deja la que viene por defecto:
-se inicia el proceso de instalación:
-esperamos que culmine..
- listo!!
- luego de que termina el proceso de instalación, se inicia el servidor y se crea el desinstalador (uninstall-postgresql)
- Directorio de instalación: si nos vamos al directorio donde instalamos el servidor, veremos lo siguiente:
root@3ODI-009:~# ls /opt/PostgreSQL/9.1
bin doc installer pgAdmin3 scripts stackbuilder
data include lib pg_env.sh share uninstall-postgresql
bin doc installer pgAdmin3 scripts stackbuilder
data include lib pg_env.sh share uninstall-postgresql
- veamos una descripción de los directorios en /opt/PostgreSQL/9.1:
- bin: almacena los archivos ejecutables del sistema, psql, postgres, pg_ctl, etc.
- doc: documentación del sistema.
- include: almacena archivos (de extensión .h) para C/C++
- lib: librerías del sistema
- man: manuales de los comandos
- share: archivos adicionales
- data: donde reside el cluster de PostgreSQL
- doc: documentación del sistema.
- include: almacena archivos (de extensión .h) para C/C++
- lib: librerías del sistema
- man: manuales de los comandos
- share: archivos adicionales
- data: donde reside el cluster de PostgreSQL
- el cluster:
root@3ODI-009:~# ls /opt/PostgreSQL/9.1/data
base pg_hba.conf pg_multixact pg_stat_tmp pg_twophase postgresql.conf
global pg_ident.conf pg_notify pg_subtrans PG_VERSION postmaster.opts
pg_clog pg_log pg_serial pg_tblspc pg_xlog postmaster.pid
base pg_hba.conf pg_multixact pg_stat_tmp pg_twophase postgresql.conf
global pg_ident.conf pg_notify pg_subtrans PG_VERSION postmaster.opts
pg_clog pg_log pg_serial pg_tblspc pg_xlog postmaster.pid
dos archivos que tocaremos mucho ya sea para configurar PostgreSQL o el nivel de acceso, serán postgresql.conf y pg_hba.conf respectivamente.
- postgresql.conf: define la configuración por defecto del servidor
- puerto de escucha
- parámetros de uso de memoria
- configuración del log
- configuración del idioma
- etc.
- parámetros de uso de memoria
- configuración del log
- configuración del idioma
- etc.
pg_hba.conf: permite restringir el acceso según:
- dirección IP del cliente.
- bases de Datos.
- nombre de usuarios y grupos.
- Requiere un reload para los cambios.
- bases de Datos.
- nombre de usuarios y grupos.
- Requiere un reload para los cambios.
- Los binarios:
root@3ODI-009:~# ls /opt/PostgreSQL/9.1/bin/
clusterdb ecpg pg_controldata pg_test_fsync psql
createdb initdb pg_ctl pg_upgrade psql.bin
createlang oid2name pg_dump pltcl_delmod reindexdb
createuser pg_archivecleanup pg_dumpall pltcl_listmod vacuumdb
dropdb pg_basebackup pg_resetxlog pltcl_loadmod vacuumlo
droplang pgbench pg_restore postgres
dropuser pg_config pg_standby postmaster
clusterdb ecpg pg_controldata pg_test_fsync psql
createdb initdb pg_ctl pg_upgrade psql.bin
createlang oid2name pg_dump pltcl_delmod reindexdb
createuser pg_archivecleanup pg_dumpall pltcl_listmod vacuumdb
dropdb pg_basebackup pg_resetxlog pltcl_loadmod vacuumlo
droplang pgbench pg_restore postgres
dropuser pg_config pg_standby postmaster
psql es el cliente interactivo de línea de comandos de PostgreSQL.
Luego de que termina la instalación, podemos acceder a psql colocando la ruta donde se encuentra instalado e indicandole con que usuario deseamos loguearnos:
/opt/PostgreSQL/9.1/bin/psql -U postgres
es necesario declarar las variables de entorno requeridas por PostgreSQL, para eso, editamos el archivo de configuración del interprete de comandos (.bashrc) y conseguiremos no sólo lo primero, sino, poder acceder a psql colocando unicamente "psql" en la consola y el password del usuario por defecto.
¿Qué pasa si coloco psql en la consola sin haber editado el .bashrc?
hay que indicarle al interprete de comandos donde se encuentra el psql instalado o nos mostrará un bonito mensaje:
root@3ODI-009:~# psql
El programa «psql» no está instalado. Puede instalarlo escribiendo:
apt-get install postgresql-client-common
El programa «psql» no está instalado. Puede instalarlo escribiendo:
apt-get install postgresql-client-common
en este caso, el psql si se encuentra instalado, pero el interprete de comandos no sabe donde se encuentra, así que (en el caso de Ubuntu) nos vamos a /home/tu_usuario/, y presionamos CTRL+H, o nos vamos a menú -> ver -> mostrar los archivos ocultos y buscamos el archivo .bashrc.
.bashrc: es el archivo de configuración de la terminal, se ejecuta cuando abrimos la consola, en el podemos indicar entre otras cosas, atajos a determinados comandos, automatizar procesos, etc.
si no encuentras el archivo .bashrc en la carpeta indicada, no hay problema, creamos uno nuevo, abrimos el gedit y agregamos la siguiente linea:
# le indicamos donde están nuestras variables de entorno
. /opt/PostgreSQL/9.1/pg_env.sh
. /opt/PostgreSQL/9.1/pg_env.sh
guardamos y listo, como hemos editado el archivo de configuración, ahora debemos cerrar la terminal y abrirla de nuevo para poder correr los cambios, así que lo hacemos y continuamos:
root@3ODI-009:~# psql
Password:
psql.bin (9.1.4)
Type "help" for help.
postgres=#
Password:
psql.bin (9.1.4)
Type "help" for help.
postgres=#
ya podemos interactuar con PostgreSQL a través del cliente psql.
Dentro del pg_env.sh encontraremos algo similar a lo siguiente:
#!/bin/sh
# The script sets environment variables helpful for PostgreSQL
export PATH=/opt/PostgreSQL/9.1/bin:$PATH
export PGDATA=/opt/PostgreSQL/9.1/data
export PGDATABASE=postgres
export PGUSER=postgres
export PGPORT=5432
export PGLOCALEDIR=/opt/PostgreSQL/9.1/share/locale
export MANPATH=$MANPATH:/opt/PostgreSQL/9.1/share/man
# The script sets environment variables helpful for PostgreSQL
export PATH=/opt/PostgreSQL/9.1/bin:$PATH
export PGDATA=/opt/PostgreSQL/9.1/data
export PGDATABASE=postgres
export PGUSER=postgres
export PGPORT=5432
export PGLOCALEDIR=/opt/PostgreSQL/9.1/share/locale
export MANPATH=$MANPATH:/opt/PostgreSQL/9.1/share/man
al tener las variables definidas en el pg_env.sh, nos evitamos tener que exportarlas siempre que sean requeridas, en cualquier momento se puede acceder a su contenido con un simple echo:
root@3ODI-009:~# echo $PGDATA;
/opt/PostgreSQL/9.1/data
/opt/PostgreSQL/9.1/data
Instalando el pgAdmin3 (Sistema de Gestión de Bases de Datos SGBD) Ver imagen.
sudo apt-get install pgadmin3
http://www.postgresql.org/
http://es.wikipedia.org/wiki/PostgreSQL
- Los comentarios están siendo moderados y serán publicados en la brevedad posible.