Entradas

Instalación de PostgreSQL en RedHat 7.5 desde código fuente

¡Bienvenidos nuevamente! En esta oportunidad vamos a estar instalando un servidor de PostgreSQL 9.2 en un servidor RedHat 7.5. No aclaré la versión del motor en el título del post ya que las instalaciones desde el código fuente son más o menos iguales para todas las versiones de PostgreSQL, y este documento puede ser de ayuda para todas ellas. Vale aclarar, no soy experto. Simplemente documento en este post los pasos que a mi me sirvieron para realizar esta tarea. Puede estar bien o mal, puede haber mejores o peores formas, pero esta me sirvio. ¡Basta de cháchara y manos al código! PostgreSQL nos exige básicamente dos dependencias, ellas son:  - GNU Readline: es una librería necesaria para recordar los comandos que utilicemos con la herramienta psql al estilo Linux. Podemos instalar PostgreSQL sin ella pero es altamente recomendable. - Zlib: es una librería necesaria para la compresión de archivos cuando utilizamos pg_dum o pg_restore. Si nuestro servidor ya tiene al...

Puesta a punto servidor RedHat 7.5

En este post quedarán registrados una serie de configuraciones para dejar listo un servidor RedHat 7.5 recién instalado para comenzar a jugar. 1) Cambio de nombre 2) Registro del servidor 3) Configuración de conexión bridge para uso de Putty 1) Cambio de nombre (requiere reinicio) hostnamectl set-hostname name 2) Registro del servidor subscription-manager register --username <username> --password <password> --auto-attach 3) Configuración de conexión bridge para uso de Putty Habilitar en VirtualBox un segundo adaptador seteandolo en Bridge, el primero debe estar en NAT. En la máquina virtual verificar que device aparece como desconectado, ese es el que utilizaremos para bridgear. nmcli device show | grep -i device Una vez elegido el device, corremos los siguientes comandos: nmcli connection add con-name br0 type bridge ifname br0 nmcli connection modify br0 ipv4.addresses '192.168.1.15/8' ipv4.method manual nmcli connection add con-name br0-...

Práctica: administrar usuarios mediante grupos en PostgreSQL

La administración de usuarios y sus respectivos privilegios sobre los objetos de la base de datos puede volverse una tarea inmanejable si contamos con muchos usuarios en el sistema y no llevamos un orden o método eficiente para hacerlo. Tomemos como ejemplo, cuando nos solicitan crear un usuario X con los mismos permisos que tiene el usuario Y . En este caso, debemos acceder a la base de datos, buscar los permisos que tiene el usuario Y en los distintos tipos de objetos (leyendo directamente el código SQL o mediante tools como psql) y replicarlos para el usuario X mediante una gran cantidad de sentencias GRANT. Si hemos tenido suerte, el usuario X quedará con los mismos permisos que el usuario Y , aunque sabemos que, por Ley de Murphy, esto no será así, y faltará algo por retocar más de una vez. Una solución un poco más práctica a la anterior, es la administración de privilegios mediante grupos, donde la idea apunta a configurar los permisos por única vez a un determinado perfi...

Cómo respaldar y restaurar bases de datos en PostgreSQL

En este artículo veremos cómo respaldar y restaurar bases de datos. Para respaldar una base de datos en particular, podemos utilizar la herramienta pg_dump ; su sintáxis básica es la siguiente: => pg_dump [options] database_name > file_of_backup.sql Dentro de las opciones, podemos especificar el host, usuario, contraseña, formato del archivo, etc. Por lo general, el respaldo lo hacemos en un archivo .sql. Cuando la base de datos es demasiado grande, tenemos opciones para una salida comprimida (.tar, .tar.gz, etc). Ejemplo práctico: respaldemos la base de datos "prueba", la cual está en nuestro servidor local. => pg_dump -h localhost -U postgres -W -d prueba > prueba_backup.sql -h: se especifica el host -U: se especifica el usuario -W: se especifica que solicite la contraseña antes de realizar el dump -d: se especifica la base de datos >: indicamos que se vuelque en el archivo prueba_backup.sql De esta manera, tenemos un respaldo completo (incl...

Cómo crear un usuario de sólo lectura en PostgreSQL

En este artículo, veamos cómo crear un usuario de solo lectura en el motor PostgresSQL. Las consideraciones que debemos tener en este punto, son los permisos que otorga Postgres por defecto, particularmente al usuario/grupo/palabra clave public . Ver detalle en la siguiente entrada  Permisos en PostgreSQL. Manos al código (trabajando desde PSQL). Creemos una base de datos para trabajar: => CREATE DATABASE prueba; Ahora creemos un usuario para jugar: => CREATE USER pruebauser WITH PASSWORD 'Una password fuerte por favor'; Ahora, empecemos a tunear los permisos. Por seguridad, revocamos los permisos al public para que ningun usuario tenga acceso a la base de datos, salvo los que especifiquemos. => REVOKE ALL ON DATABASE prueba FROM public; Listo, paso siguiente es darle privilegios a nuestro usuario de sólo lectura para que pueda conectarse a la base de datos: => GRANT CONNECT ON DATABASE prueba TO pruebauser; El usuario ya puede con...

Permisos en PostgreSQL

En el siguiente artículo, veamos cómo Postgres gestiona los permisos sobre los objetos. Antes de ir directamente a los GRANT/REVOKE, tenemos que tener en cuenta algunas consideraciones respecto a los permisos por defecto que brinda Postgres. Owner : Cuando se crea un objeto de base de datos, se le asigna un owner (generalmente es quién ejecuta la sentencia de creación), por ejemplo CREATE DATABASE db_name. A este owner, Postgres le asigna por defecto todos los permisos sobre ese objeto. Public - Existe el pseudo-rol o palabra clave Public , que se puede entender como un grupo que contiene a todos los usuarios de la instancia. Por defecto, este grupo tiene ciertos privilegios sobre los objetos de la base de datos, como ser: CONNECT y TEMPORARY (crear tablas temporales) para las bases de datos, EXCECUTE para las funciones y USAGE para los lenguajes y tipos de datos. Nota : no se asignan privilegios por defecto a Public para tablas, columnas, esquemas, secuencias, foreign data wra...

Cómo obtener las queries bloqueadas y liberarlas en PostgreSQL

Se debe ejecutar la siguiente consulta sobre la base de datos bloqueada: SELECT blocked_locks.pid     AS blocked_pid,          blocked_activity.usename  AS blocked_user,          blocking_locks.pid     AS blocking_pid,          blocking_activity.usename AS blocking_user,          blocked_activity.query    AS blocked_statement,          blocking_activity.query   AS current_statement_in_blocking_process FROM  pg_catalog.pg_locks         blocked_locks JOIN pg_catalog.pg_stat_activity blocked_activity  ON blocked_activity.pid = blocked_locks.pid JOIN pg_catalog.pg_locks         blocking_locks      ...