Backup de base de datos PostgreSQL

Hacer copias de seguridad de una base de datos, es una tarea básica que cualquier persona que administre servidores debería conocer.

Y en el caso de necesitar hacer un Backup de una base de datos Postgres, es una tarea sencilla que se puede realizar con un simple comando:

$ pg_dump -U usuario -d base_de_datos > destino.sql

Solo será necesario reemplazar el texto resaltado por los parámetros de su DB.

Al ejecutar el comando, se le pedirá la contraseña del usuario de la DB y al finalizar su ejecución debería generarse un archivo .SQL que podrá ser importado sin problemas.

¿Como importar una base de datos?

Para importar una base de datos, primero sería necesario logearse con el usuario de postgres.

Por ej. con el comando:

# su postgres

y luego ejecutar:

$ psql -U usuario -d base_de_datos < origen.sql

Y listo!

Creación básica de usuario y base de datos PostgreSQL

Una de las tareas indispensables al implementar un sistema informático, es la creación de la base de datos y su usuario asociado, algo que muchas herramientas ya realizan de forma automática como parte de sus procesos, igualmente la idea en este caso es saber como se hace a mano y eventualmente analizar como automatizarlo dentro de la lógica de trabajo.

Que comandos usar

Bien, vamos manos a la obra, lo primero a realizar es claramente, conectarse al servidor (usualmente por SSH).

Primero hay que logearse con el usuario admin, por defecto luego de instalar Postgres dicho usuario es “postgres” y el mismo no tiene contraseña asociada (se recomienda definir una):

# su postgres

Luego se deberá ingresar a la consola de Postgres:

$ psql

Dentro de la consola Postgres, deberemos crear el usuario en cuestión con:

postgres=# create user pepe password ‘I7lKL@6c5GF9u7JjvdCv6fulFvxayUY0tuKUoliy0V&1FPXU‘;

En este caso “pepe” y la contraseña “yUY0tuKUoliy0V&1FPXU…”.

Si todo va bien, la consola responderá “CREATE ROLE”

Luego podemos crear la base de datos:

postgres=# create database tomate with owner pepe;

En este caso “tomate” es el nombre de la base de datos.

Si todo va bien, la consola responderá “CREATE DATABASE”

Ahora el último paso sería otorgar al usuario pepe los permisos para operar sobre la base de datos creada.

postgres=# GRANT ALL PRIVILEGES ON DATABASE tomate to pepe;

Si todo va ok, la consola responderá “GRANT”.

Y listo! Ya hemos creado el usuario y contraseña para una nueva base de datos Postgres!

Recomendaciones básicas

Si la base de datos que crearás es parte de una implementación de software en producción, por cuestiones de seguridad:

  • NUNCA deben usarse usuarios con acceso de tipo administrador.
  • Se debe crear un nuevo usuario para cada base de datos e instancia, lo ideal sería que cada usuario tenga solo permisos sobre una sola base de datos.
  • Usar nombres no descriptivos tanto para usuarios como bases de datos, la idea es hacer mas tedioso el trabajo para cualquier posible intruso del sistema.