15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
31.10.2024
1 +1

Cómo Administrar Bases de Datos en PostgreSQL: Una Guía Completa para Usuarios de Linux VPS

PostgreSQL (comúnmente llamado Postgres) es uno de los sistemas de gestión de bases de datos relacionales de código abierto más potentes y ricos en características disponibles hoy en día. Confiado por equipos de startups y empresas por igual, destaca en el manejo de consultas complejas, grandes conjuntos de datos y arquitecturas de aplicaciones escalables. Ya sea que estés construyendo una plataforma SaaS, una tienda de comercio electrónico o un backend de API intensivo en datos, PostgreSQL ofrece la confiabilidad y el rendimiento que tu proyecto demanda.

Ejecutar PostgreSQL en un entorno de VPS Hosting de alto rendimiento — con almacenamiento NVMe SSD, acceso root completo y protección DDoS integrada — te da control total sobre tu infraestructura de base de datos sin la sobrecarga de soluciones en la nube administradas. Esta guía te acompaña en cada tarea esencial de gestión de PostgreSQL, desde el acceso inicial y la creación de bases de datos hasta los permisos de usuario, copias de seguridad y endurecimiento de seguridad.

Requisitos previos

Antes de proceder, asegúrate de tener:

  • Un VPS Linux ejecutando Ubuntu, Debian o CentOS con PostgreSQL instalado
  • Acceso root o sudo a tu servidor
  • Familiaridad básica con la línea de comandos de Linux

Si aún no has configurado tu entorno de servidor, los Paneles de Control VPS de AlexHost hacen que sea sencillo configurar tu stack rápidamente.

1. Acceso a la interfaz de línea de comandos de PostgreSQL

Todas las tareas de gestión de PostgreSQL comienzan en la interfaz de línea de comandos (CLI), también conocida como psql. Por defecto, PostgreSQL crea un usuario del sistema llamado postgres durante la instalación, y esta cuenta se utiliza para autenticarse con el motor de base de datos.

Paso 1: Cambiar al usuario del sistema PostgreSQL

sudo -i -u postgres

Paso 2: Iniciar la CLI de PostgreSQL

psql

Una vez conectado, verás el indicador interactivo:

postgres=#

Esto confirma que estás dentro del entorno de PostgreSQL y listo para ejecutar comandos SQL y meta-comandos.

> Consejo profesional: También puedes conectarte directamente sin cambiar de usuario ejecutando sudo -u postgres psql desde tu sesión de shell regular.

2. Crear una nueva base de datos

Las bases de datos son contenedores de nivel superior para todas tus tablas, índices y datos almacenados. Usa la declaración CREATE DATABASE para provisionar una nueva base de datos.

Sintaxis

CREATE DATABASE database_name;

Ejemplo

CREATE DATABASE my_database;

Esto crea una base de datos llamada my_database propiedad del rol de PostgreSQL actualmente activo.

Verificar que la base de datos fue creada

Usa el meta-comando l para listar todas las bases de datos en el servidor:

l

Verás una tabla que muestra nombres de bases de datos, propietarios, codificaciones y privilegios de acceso.

3. Crear y gestionar usuarios de base de datos

La gestión adecuada de usuarios es crítica para la seguridad de la base de datos. En lugar de otorgar a todas las aplicaciones acceso bajo la cuenta de superusuario postgres, debes crear usuarios dedicados con permisos limitados.

Crear un nuevo usuario

CREATE USER username WITH PASSWORD 'your_secure_password';

Ejemplo

CREATE USER dbuser WITH PASSWORD 'StrongP@ssword123';

Otorgar acceso completo a una base de datos específica

GRANT ALL PRIVILEGES ON DATABASE database_name TO username;

Ejemplo

GRANT ALL PRIVILEGES ON DATABASE my_database TO dbuser;

Esto otorga a dbuser acceso completo de lectura y escritura a my_database, incluyendo la capacidad de crear y eliminar tablas.

Listar todos los usuarios

Para ver todos los roles y usuarios existentes:

du

4. Conectarse a una base de datos

Una vez que existe una base de datos, necesitas conectarte a ella antes de poder crear tablas o ejecutar consultas contra ella.

Cambiar a una base de datos

c my_database

El indicador se actualizará para reflejar la base de datos activa:

my_database=#

Ahora estás operando dentro de my_database y puedes ejecutar todas las declaraciones DDL y DML contra ella.

5. Crear y gestionar tablas

Las tablas son la unidad estructural central de cualquier base de datos relacional. Cada tabla define un esquema — un conjunto de columnas nombradas con tipos de datos específicos y restricciones.

Crear una tabla

CREATE TABLE table_name (
    column1 data_type PRIMARY KEY,
    column2 data_type,
    column3 data_type
);

Ejemplo práctico: Tabla de registros de empleados

CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,
    name        VARCHAR(100) NOT NULL,
    department  VARCHAR(50),
    salary      NUMERIC(10, 2)
);

Aquí, SERIAL incrementa automáticamente el employee_id en cada fila nueva, y NOT NULL obliga a que cada empleado tenga un nombre.

6. Insertar, consultar, actualizar y eliminar datos

Insertar un registro

INSERT INTO employees (name, department, salary)
VALUES ('Jane Smith', 'Engineering', 72000);

Consultar todos los registros

SELECT * FROM employees;

Filtrar resultados con una cláusula WHERE

SELECT name, salary FROM employees WHERE department = 'Engineering';

Actualizar un registro existente

UPDATE employees
SET salary = 78000
WHERE name = 'Jane Smith';

Eliminar un registro específico

DELETE FROM employees
WHERE name = 'Jane Smith';

> Mejor práctica: Siempre usa una cláusula WHERE con las declaraciones UPDATE y DELETE. Omitirla afectará a cada fila de la tabla.

7. Gestionar acceso a la base de datos y seguridad

La seguridad es una preocupación de primera clase en cualquier implementación de PostgreSQL en producción. El principio del menor privilegio — otorgar a los usuarios solo los permisos que realmente necesitan — reduce drásticamente tu superficie de ataque.

Revocar todos los privilegios de un usuario

REVOKE ALL PRIVILEGES ON DATABASE my_database FROM dbuser;

Otorgar acceso de solo lectura a una tabla específica

GRANT SELECT ON TABLE employees TO dbuser;

Esto permite a dbuser consultar la tabla employees pero previene cualquier inserción, actualización o eliminación.

Otorgar permisos DML específicos

GRANT SELECT, INSERT, UPDATE ON TABLE employees TO dbuser;

Recomendaciones de seguridad adicionales

  • Usa contraseñas fuertes y únicas para cada usuario de base de datos
  • Deshabilita el acceso remoto para el superusuario postgres en pg_hba.conf
  • Habilita conexiones SSL para cifrar datos en tránsito — combina esto con un Certificado SSL confiable en tu servidor
  • Audita regularmente los privilegios de usuario usando du y dp
  • Mantén PostgreSQL actualizado para parchear vulnerabilidades conocidas

8. Hacer copias de seguridad y restaurar bases de datos

Las copias de seguridad regulares son innegociables para cualquier base de datos en producción. PostgreSQL proporciona las utilidades pg_dump y psql para flujos de trabajo de copia de seguridad y restauración sencillos.

Hacer copia de seguridad de una base de datos en un archivo SQL

pg_dump my_database > my_database_backup.sql

Esto exporta el esquema completo de la base de datos y los datos como un script SQL de texto plano.

Hacer copia de seguridad en formato comprimido (recomendado para bases de datos grandes)

pg_dump -Fc my_database > my_database_backup.dump

El formato personalizado (-Fc) produce un archivo binario comprimido y admite restauración paralela.

Restaurar una base de datos desde una copia de seguridad SQL

psql my_database < my_database_backup.sql

Restaurar desde una copia de seguridad en formato personalizado

pg_restore -d my_database my_database_backup.dump

Automatizar copias de seguridad con un trabajo cron

Programa copias de seguridad diarias agregando una entrada cron:

crontab -e
0 2 * * * pg_dump my_database > /var/backups/postgres/my_database_$(date +%F).sql

Esto ejecuta una copia de seguridad todos los días a las 2:00 AM y añade la fecha al nombre del archivo para facilitar el versionado.

9. Eliminar tablas y bases de datos

Cuando una tabla o base de datos ya no es necesaria, usa el comando DROP para eliminarla permanentemente.

Eliminar una tabla

DROP TABLE table_name;

Ejemplo

DROP TABLE employees;

Eliminar una tabla solo si existe (sintaxis más segura)

DROP TABLE IF EXISTS employees;

Eliminar una base de datos

Debes desconectarte de la base de datos de destino antes de eliminarla. Primero cambia a la base de datos predeterminada postgres:

c postgres

Luego elimina el destino:

DROP DATABASE my_database;

> Advertencia: DROP DATABASE es irreversible. Siempre verifica que tengas una copia de seguridad actual antes de ejecutar este comando en producción.

10. Referencia de meta-comandos útiles de PostgreSQL

La CLI psql incluye un conjunto rico de meta-comandos (prefijados con ) que simplifican la navegación e inspección:

ComandoDescripción
lListar todas las bases de datos
c dbnameConectarse a una base de datos
dtListar todas las tablas en la base de datos actual
d table_nameDescribir el esquema de una tabla
duListar todos los usuarios y roles
dpMostrar privilegios de acceso a la tabla
timingAlternar la visualización del tiempo de ejecución de consultas
qSalir de la CLI de PostgreSQL

11. Salir de la CLI de PostgreSQL

Cuando hayas terminado con tu sesión, sal limpiamente usando:

q

Esto te devuelve al indicador de shell de Linux.

¿Por qué ejecutar PostgreSQL en un VPS de AlexHost?

El rendimiento y el control son las dos razones más importantes para auto-alojar PostgreSQL en un VPS dedicado en lugar de depender de un servicio de base de datos compartido o administrado. Con la infraestructura de AlexHost, obtienes:

  • Almacenamiento NVMe SSD para operaciones de lectura/escritura ultra-rápidas en grandes conjuntos de datos
  • Acceso root completo para configurar PostgreSQL exactamente como tu aplicación lo requiere
  • Protección D
15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar