Eines de gestió de SGBD
Introducció
Un DBA necessita dues categories d'eines per administrar els sistemes gestors de bases de dades: clients de línia de comandes (CLI), que permeten automatitzar tasques i treballar en servidors remots sense entorn gràfic, i eines gràfiques (GUI), que faciliten la visualització, el disseny d'esquemes i les tasques puntuals d'administració.
mindmap
root((Eines SGBD))
CLI
psql
PostgreSQL
mysql / mysqladmin
MySQL · MariaDB
sqlcmd
SQL Server
sqlplus
Oracle
GUI
DBeaver
Universal
pgAdmin 4
PostgreSQL
MySQL Workbench
MySQL · MariaDB
SSMS
SQL Server
Oracle SQL Developer
Oracle
Clients de línia de comandes (CLI)
psql — PostgreSQL
psql és el client interactiu oficial de PostgreSQL. Suporta tant comandes SQL com meta-comandes pròpies del client (prefixades per \).
Instal·lació:
# Ubuntu / Debian (client independent del servidor)
sudo apt install -y postgresql-client-16
# O usant el contenidor Docker sense instal·lar res al sistema
docker exec -it postgres16 psql -U admin -d prova
Connexió:
# Forma bàsica
psql -h localhost -p 5432 -U admin -d empresa
# Via URI de connexió
psql "postgresql://admin:S3cr3tPass!@localhost:5432/empresa"
# Usant variables d'entorn
export PGHOST=localhost
export PGPORT=5432
export PGUSER=admin
export PGPASSWORD=S3cr3tPass!
export PGDATABASE=empresa
psql
Meta-comandes essencials:
| Comanda | Descripció |
|---|---|
\l o \list |
Llista de bases de dades |
\c <db> |
Connectar-se a una base de dades |
\dt |
Llista de taules de l'esquema actual |
\dt *.* |
Llista de taules de tots els esquemes |
\d <taula> |
Estructura d'una taula (columnes, índexos, FK) |
\di |
Llista d'índexos |
\dv |
Llista de vistes |
\df |
Llista de funcions |
\du |
Llista d'usuaris i rols |
\dn |
Llista d'esquemes |
\timing |
Mostrar temps d'execució de les consultes |
\e |
Obrir l'editor de text per escriure la consulta |
\i <fitxer.sql> |
Executar un fitxer SQL |
\o <fitxer> |
Redirigir la sortida a un fitxer |
\copy |
Copiar dades entre taula i fitxer (mode client) |
\x |
Mode expanded (sortida vertical per a files llargues) |
\? |
Ajuda sobre meta-comandes |
\h <comanda> |
Ajuda sobre comandes SQL |
\q |
Sortir |
Exemple d'ús de \copy:
# Exportar a CSV
\copy clients TO '/tmp/clients.csv' WITH (FORMAT CSV, HEADER true, DELIMITER ',');
# Importar des de CSV
\copy clients FROM '/tmp/clients.csv' WITH (FORMAT CSV, HEADER true, DELIMITER ',');
psql i el fitxer .psqlrc
Podeu personalitzar el comportament de psql creant el fitxer ~/.psqlrc. Per exemple, per activar sempre el temporitzador i l'auto-completat:
mysql i mysqladmin — MySQL / MariaDB
Instal·lació:
# Client MySQL (Ubuntu/Debian)
sudo apt install -y mysql-client
# O usant el contenidor
docker exec -it mysql8 mysql -u admin -pAdminPass1! prova
Connexió:
mysql -h 127.0.0.1 -P 3306 -u admin -p empresa
# Amb compressió (útil per a connexions lentes)
mysql -h 127.0.0.1 -u admin -p --compress empresa
# Executar una consulta directament (mode no interactiu)
mysql -u admin -p empresa -e "SELECT COUNT(*) FROM clients;"
Comandes SQL de gestió:
| Comanda | Descripció |
|---|---|
SHOW DATABASES; |
Llista de bases de dades |
USE empresa; |
Seleccionar base de dades activa |
SHOW TABLES; |
Llista de taules |
DESCRIBE clients; |
Estructura d'una taula |
SHOW CREATE TABLE clients\G |
DDL complet de la taula |
SHOW INDEXES FROM clients; |
Índexos d'una taula |
SHOW PROCESSLIST; |
Processos/connexions actius |
SHOW STATUS; |
Estadístiques del servidor |
SHOW VARIABLES; |
Variables de configuració |
SHOW GRANTS FOR 'admin'@'%'; |
Privilegis d'un usuari |
\G |
Mode vertical (al final d'una consulta) |
\q o EXIT; |
Sortir |
mysqladmin — Eina per a operacions d'administració des de la línia de comandes:
# Ping al servidor
mysqladmin -u root -p ping
# Veure l'estat del servidor
mysqladmin -u root -p status
mysqladmin -u root -p extended-status
# Veure variables
mysqladmin -u root -p variables
# Crear/eliminar base de dades
mysqladmin -u root -p create nova_db
mysqladmin -u root -p drop nova_db
# Recarregar privilegis
mysqladmin -u root -p flush-privileges
# Matar un procés per ID
mysqladmin -u root -p kill 42
# Aturar el servidor
mysqladmin -u root -p shutdown
sqlcmd — SQL Server
Instal·lació:
# Ubuntu/Debian
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | \
sudo tee /etc/apt/sources.list.d/msprod.list
sudo apt update
sudo apt install -y mssql-tools18 unixodbc-dev
# O des del contenidor Docker
docker exec -it sqlserver2022 /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U SA -P "S3cr3tPass!23" -No
Connexió i ús bàsic:
# Connexió bàsica
sqlcmd -S localhost,1433 -U SA -P "S3cr3tPass!23" -No
# Executar un fitxer SQL
sqlcmd -S localhost -U SA -P "S3cr3tPass!23" -No -i script.sql
# Executar una consulta directament
sqlcmd -S localhost -U SA -P "S3cr3tPass!23" -No -Q "SELECT @@VERSION"
Comandes dins de sqlcmd:
-- Llistar bases de dades
SELECT name FROM sys.databases; GO
-- Canviar de base de dades
USE Empresa; GO
-- Veure taules
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'; GO
-- Veure columnes d'una taula
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Clients'; GO
-- Sortir
EXIT
sqlplus i SQL Developer — Oracle
sqlplus és el client interactiu clàssic d'Oracle, disponible com a part de l'Oracle Client o dins de la imatge Docker.
Connexió:
# Des del contenidor Docker
docker exec -it oracle21xe sqlplus system/S3cr3tPass!@//localhost/FREEPDB1
# Connexió com SYSDBA
docker exec -it oracle21xe sqlplus / as sysdba
# Connexió des del sistema amfitrió (cal Oracle Client o Instant Client)
sqlplus admin/pass@//localhost:1521/FREEPDB1
Comandes sqlplus:
| Comanda | Descripció |
|---|---|
SHOW CON_NAME; |
Mostrar el PDB/CDB actual |
SHOW USER; |
Usuari connectat |
SELECT * FROM v$version; |
Versió d'Oracle |
DESC clients; |
Estructura d'una taula |
SELECT table_name FROM user_tables; |
Taules de l'usuari actual |
SELECT * FROM all_tables; |
Totes les taules accessibles |
SPOOL /tmp/output.txt |
Redirigir sortida a fitxer |
SPOOL OFF |
Tancar el spool |
@script.sql |
Executar un fitxer SQL |
SET PAGESIZE 50 |
Files per pàgina |
SET LINESIZE 200 |
Amplada de línia |
EXIT; |
Sortir |
Eines gràfiques (GUI)
DBeaver — Eina universal
DBeaver és un client de base de dades universal de codi obert que suporta tots els motors principals. És l'eina recomanada per a ús diari en aquest curs perquè permet treballar amb PostgreSQL, MySQL, SQL Server i Oracle des d'una única interfície.
Instal·lació:
# Ubuntu / Debian (DBeaver Community Edition)
wget -O /tmp/dbeaver.deb https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb
sudo apt install -y /tmp/dbeaver.deb
# macOS (Homebrew)
brew install --cask dbeaver-community
# Windows: descarregueu l'instal·lador de https://dbeaver.io/download/
# O via Docker (interfície web experimental)
docker run -d --name dbeaver-ce \
-e CB_SERVER_NAME="DBeaver" \
-p 8978:8978 \
dbeaver/cloudbeaver:latest
Connexió de DBeaver a cada motor:
- Clic a New Database Connection → seleccioneu PostgreSQL.
- Empleneu:
- Host:
localhost - Port:
5432 - Database:
empresa - Username:
admin - Password:
S3cr3tPass! - Clic a Test Connection (DBeaver descarregarà el driver JDBC automàticament si cal).
- Clic a Finish.
- Clic a New Database Connection → seleccioneu MySQL.
- Empleneu:
- Server Host:
localhost - Port:
3306 - Database:
empresa - Username:
admin - Password:
AdminPass1! - A la pestanya Driver properties, assegureu-vos que
allowPublicKeyRetrieval = trueiuseSSL = falseper a proves locals. - Clic a Test Connection → Finish.
- Clic a New Database Connection → seleccioneu SQL Server (opció Microsoft).
- Empleneu:
- Host:
localhost - Port:
1433 - Database:
master(o la vostra BD) - Username:
SA - Password:
S3cr3tPass!23 - A la pestanya Driver properties:
encrypt = falseper a proves locals sense SSL. - Clic a Test Connection → Finish.
pgAdmin 4 — PostgreSQL
pgAdmin 4 és l'eina gràfica oficial per a PostgreSQL. Ofereix un explorador d'objectes, editor de consultes, monitor de processos i eines de backup i restore.
Instal·lació via Docker:
docker run -d \
--name pgadmin4 \
-e PGADMIN_DEFAULT_EMAIL=admin@sgbd.local \
-e PGADMIN_DEFAULT_PASSWORD=PgAdmin_Pass!2024 \
-p 5050:80 \
--network sgbd_net \
dpage/pgadmin4:latest
Accediu a http://localhost:5050 i afegiu el servidor PostgreSQL amb la IP del contenidor (o el nom de servei sgbd_postgres si esteu a la mateixa xarxa Docker).
MySQL Workbench — MySQL / MariaDB
MySQL Workbench és l'eina oficial d'Oracle per a MySQL. Inclou dissenyador E-R, editor SQL, monitor de rendiment i eines de migració.
Instal·lació:
# Ubuntu
sudo apt install -y mysql-workbench-community
# Windows / macOS: https://dev.mysql.com/downloads/workbench/
SSMS — SQL Server Management Studio
SQL Server Management Studio (SSMS) és l'eina oficial de Microsoft per a SQL Server. Disponible únicament per a Windows.
Instal·lació: - Descarregueu l'instal·lador gratuït des de: https://aka.ms/ssmsfullsetup
Des de Linux o macOS, les alternatives per a SQL Server són: - DBeaver (recomanat) - Azure Data Studio (disponible per a Linux, Windows i macOS): https://aka.ms/azuredatastudio
# Azure Data Studio (Ubuntu)
wget -O /tmp/azuredatastudio.deb \
https://go.microsoft.com/fwlink/?linkid=2232883
sudo apt install -y /tmp/azuredatastudio.deb
Oracle SQL Developer
Oracle SQL Developer és l'eina gràfica oficial per a Oracle Database. Basada en Java, funciona en qualsevol plataforma.
Instal·lació: - Descarregueu des de: https://www.oracle.com/tools/downloads/sqldev-downloads.html - Requereix Java 11 o superior.
# Comprovar Java
java -version
# Llançar SQL Developer (una vegada descomprimit)
cd sqldeveloper/
./sqldeveloper.sh
Taula comparativa d'eines
| Eina | Motor(s) | Tipus | Plataforma | Llicència |
|---|---|---|---|---|
| DBeaver CE | Tots | GUI | Win / Mac / Linux | Open Source |
| pgAdmin 4 | PostgreSQL | GUI | Win / Mac / Linux / Web | Open Source |
| MySQL Workbench | MySQL / MariaDB | GUI | Win / Mac / Linux | GPL |
| SSMS | SQL Server | GUI | Windows | Gratuït (propietari) |
| Azure Data Studio | SQL Server (+ altres) | GUI | Win / Mac / Linux | Open Source |
| Oracle SQL Developer | Oracle | GUI | Win / Mac / Linux | Gratuït (propietari) |
| psql | PostgreSQL | CLI | Win / Mac / Linux | Open Source |
| mysql | MySQL / MariaDB | CLI | Win / Mac / Linux | GPL |
| sqlcmd | SQL Server | CLI | Win / Mac / Linux | Gratuït (propietari) |
| sqlplus | Oracle | CLI | Win / Mac / Linux | Gratuït (propietari) |
Miniactivitat — AC0109
Connexió des de DBeaver a dos motors
- Instal·leu DBeaver Community Edition al vostre equip.
- Assegureu-vos que els contenidors Docker de PostgreSQL i MySQL de les sessions anteriors estan en marxa.
- Creeu dues connexions a DBeaver: una per a PostgreSQL i una altra per a MySQL (useu les credencials dels exercicis anteriors).
- Per a cadascuna de les connexions:
- Exploreu l'arbre d'objectes (bases de dades, esquemes, taules).
- Obriu l'Editor SQL i executeu una consulta de selecció.
- Genereu el DDL d'una taula usant el menú contextual (Generate SQL → DDL).
- Useu l'Editor ER Diagram de DBeaver per visualitzar les relacions entre taules de la vostra base de dades de prova (si en teniu; si no, creeu almenys dues taules relacionades).
- Feu una captura de la finestra de DBeaver amb les dues connexions actives i l'arbre d'objectes desplegat.
Entrega: captura de pantalla de DBeaver amb ambdues connexions i el diagrama ER.