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 postgresPaso 2: Iniciar la CLI de PostgreSQL
psqlUna 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:
lVerá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:
du4. 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_databaseEl 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
postgresenpg_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
duydp - 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.sqlEsto 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.dumpEl 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.sqlRestaurar desde una copia de seguridad en formato personalizado
pg_restore -d my_database my_database_backup.dumpAutomatizar copias de seguridad con un trabajo cron
Programa copias de seguridad diarias agregando una entrada cron:
crontab -e0 2 * * * pg_dump my_database > /var/backups/postgres/my_database_$(date +%F).sqlEsto 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 postgresLuego 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:
| Comando | Descripción |
|---|---|
l | Listar todas las bases de datos |
c dbname | Conectarse a una base de datos |
dt | Listar todas las tablas en la base de datos actual |
d table_name | Describir el esquema de una tabla |
du | Listar todos los usuarios y roles |
dp | Mostrar privilegios de acceso a la tabla |
timing | Alternar la visualización del tiempo de ejecución de consultas |
q | Salir de la CLI de PostgreSQL |
11. Salir de la CLI de PostgreSQL
Cuando hayas terminado con tu sesión, sal limpiamente usando:
qEsto 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
