PostrgeSQL es licencia Open Source.
Desarrollado originalmente por el Departamento de Ciencias de Computación de UC Berkeley, fue pionero en muchos de los conceptos de objetos y relacionales que ahora están apareciendo en algunas bases de datos comerciales. Provee soporte para lenguajes SQL92/SQL99, transacciones, integridad referencial, procedimientos almacenados y extensibilidad de tipos.
PostgreSQL es un descendiente de código abierto de su código original de Berkeley.
Desinstalación de postgresql
En el caso de tener instalada una versión anterior hay que desinstalarla o instalar la nueva en otro directorio.
Buscar paquetes dependientes de postgresql instalados con rpm.
rpm -qa | grep postgresql
Desinstalar postgresql
rpm -ev --nodeps postgresql*
Descargarse el código fuente de la siguiente dirección:
www.postgresql.org/download/
Descomprimir
tar xvfz postgresql-8.0.3.tar.gz
cd postgresql-8.0.3
Configuración personalizada
Esta puede variar según nuestras necesidades, en mi caso es de esta manera:
./configure --prefix=/usr/local/pgsql/ --exec-prefix=/usr/local/pgsql/ --enable-nls --with-perl --with-python --with-pam --enable-odbc --with-unixodbc --with-openssl
Compilar
make
Instalar
make install
Si ocurre un error durante, la configuración o compilación entonces tenemos 2 casos que hacer:
1.
make clean
Instalar las dependencias y repetir el proceso desde la configuración.
2.
make clean
Cambiar la configuración quitando el o los parámetros que nos causa el conflicto y ejecutar esta nueva configuración siguiendo con el proceso.
Creación de la cuenta de usuario postgres
adduser postgres –d /data/pgsql
su – postgres
mkdir data
/usr/local/pgsql/bin/initdb -D /data/pgsql/data
/usr/local/pgsql/bin/postmaster -D /data/pgsql/data >logfile 2>&1 &
Agreguemos estas variables de entorno al final del archivo : /etc/profile
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
PATH=/usr/local/pgsql/bin:$PATH
export PATH
MANPATH=/usr/local/pgsql/man:$MANPATH
export MANPATH
Escribir el script de arranque
cat > /etc/rc.d/init.d/postgresql $PGDATA/../initdb.i18n
echo "export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC LC_CTYPE LC_TIME" >> $PGDATA/../initdb.i18n
su -l postgres -s /bin/sh -c "$prefix/bin/initdb --pgdata=$PGDATA > /dev/null 2>&1" < /dev/null
[ -f $PGDATA/PG_VERSION ] && echo_success
[ ! -f $PGDATA/PG_VERSION ] && echo_failure
echo
fi
pid=`pidof -s $prefix/bin/postmaster`
if [ $pid ] && $prefix/bin/pg_ctl status -D $PGDATA > /dev/null 2>&1
then
echo $"Postmaster already running."
else
rm -f /tmp/.s.PGSQL.${PGPORT} > /dev/null
echo -n "$PSQL_START"
su -l postgres -s /bin/sh -c "$prefix/bin/postmaster -D $PGDATA >logfile 2>&1 &"
sleep 1
pid=`pidof -s $prefix/bin/postmaster`
if [ $pid ]
then
success "$PSQL_START"
touch /var/lock/subsys/${NAME}
echo $pid > /var/run/postmaster.${PGPORT}.pid
echo
else
failure "$PSQL_START"
echo
fi
fi
}
stop(){
echo -n $"Stopping ${NAME} service: "
su -l postgres -s /bin/sh -c "$prefix/bin/pg_ctl stop -D $PGDATA -s -m fast" > /dev/null 2>&1
ret=$?
if [ $ret -eq 0 ]
then
echo_success
else
echo_failure
fi
echo
rm -f /var/run/postmaster.${PGPORT}.pid
rm -f /var/lock/subsys/${NAME}
}
restart(){
stop
start
}
condrestart(){
[ -e /var/lock/subsys/${NAME} ] && restart
}
reload(){
su -l postgres -s /bin/sh -c "$prefix/bin/pg_ctl reload -D $PGDATA -s" > /dev/null 2>&1
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status postmaster
;;
restart)
restart
;;
condrestart)
condrestart
;;
reload|force-reload)
reload
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
exit 1
esac
exit 0
EOF
chmod 755 /etc/rc.d/init.d/postgresql
Últimos enlaces fuertes
cd /etc/rc.d/init.d &&
ln -sf ../init.d/postgresql ../rc0.d/K26postgresql &&
ln -sf ../init.d/postgresql ../rc1.d/K26postgresql &&
ln -sf ../init.d/postgresql ../rc2.d/K26postgresql &&
ln -sf ../init.d/postgresql ../rc3.d/S34postgresql &&
ln -sf ../init.d/postgresql ../rc4.d/S34postgresql &&
ln -sf ../init.d/postgresql ../rc5.d/S34postgresql &&
ln -sf ../init.d/postgresql ../rc6.d/K26postgresql
ya lo puedes arrancar, parar, o reiniciar
/etc/rc.d/init.d/postgresql start
/etc/rc.d/init.d/postgresql stop
/etc/rc.d/init.d/postgresql restart
o tambien:
/sbin/service postgresql start
/sbin/service postgresql stop
/sbin/service postgresql restart
Hay que hacer algunas modificaciones a la configuración de postgresql para que pueda escuchar la red, por así como esta solo escucha nada más peticiones locales “localhost”
postgresql.conf
Dentro de postgresql.conf que esta /data/pgsql/dada/ que fue la ruta donde decidimos instalar la base de datos:
listen_addresses = '192.168.19.46'
password_encryption = trae
en esta misma ruta habilitamos los permisos de rangos o que ip’s que se van conectar remotamente
pg_hba.conf
local all all password
host all all 127.0.0.1 255.255.255.255 password
host all all 192.168.19.50 255.255.255.255 password
Todavía no hay que reiniciar el servidor postgresql para que levante esta nueva configuración si no asta que demos de lata todos los usuarios de base d datos con sus contraseña correspondientes.
Crear usuarios y bases de datos
tenemos que iniciar sesión con el usuario postgres
su postgres
Crear los usuarios
Para cera usuarios de postgresql con el comando createuser:
Que se encuentra dentro de: /usr/local/pgsql/bin/
createuser [OPCIÓN]... [USUARIO]
-a, --adduser el usuario podrá crear otros usuarios
-A, --no-adduser el usuario no podrá crear otros usuarios
-d, --createdb el usuario podrá crear bases de datos
-D, --no-createdb el usuario no podrá crear bases de datos
-P, --pwprompt asignar una contraseña al nuevo usuario
-E, --encrypted almacenar la constraseña cifrada
-N, --unencrypted almacenar la contraseña sin cifrar
-i, --sysid=SYSID escoger un ID para el nuevo usuario
-e, --echo mostrar los comandos a medida que se ejecutan
-q, --quiet no escribir ningún mensaje
--help desplegar esta ayuda y salir
--version desplegar información de versión y salir
Opciones de conexión:
-h, --host=SERVIDOR nombre del servidor o directorio del socket
-p, --port puerto del servidor
-U, --username=NOMBRE nombre de usuario con el cual conectase
(no el usuario a crear)
-W, --password pedir contraseña para conectarse
Ejemplo:
createdb –P nuevo_usuario
Crear base de datos
createdb crea una base de datos PostgreSQL.
createdb [OPCIÓN]... [NOMBRE] [DESCRIPCIÓN]
Opciones:
-D, --location=RUTA lugar donde ubicar la base de datos
-E, --encoding=CODIFICACIÓN codificación para la base de datos
-O, --owner=DUEÑO usuario que será dueño de la base de datos
-T, --template=PATRÓN base de datos patrón a copiar
-e, --echo mostrar los comandos a medida que se ejecutan
-q, --quiet no escribir ningún mensaje
--help desplegar esta ayuda y salir
--version desplegar información de versión y salir
Opciones de conexión:
-h, --host=SERVIDOR nombre del servidor o directorio del socket
-p, --port puerto del servidor
-U, --username=USUARIO nombre de usuario para la conexión
-W, --password preguntar la contraseña
Ejemplo:
createdb nueva_base
Ahora si hay reiniciar el servidor de postgres para que cargue la nueva configuración.