Salta el contingut

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:

\timing on
\set COMP_KEYWORD_CASE upper
\set HISTSIZE 2000
\pset null '[NULL]'


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:

  1. Clic a New Database Connection → seleccioneu PostgreSQL.
  2. Empleneu:
  3. Host: localhost
  4. Port: 5432
  5. Database: empresa
  6. Username: admin
  7. Password: S3cr3tPass!
  8. Clic a Test Connection (DBeaver descarregarà el driver JDBC automàticament si cal).
  9. Clic a Finish.
jdbc:postgresql://localhost:5432/empresa
  1. Clic a New Database Connection → seleccioneu MySQL.
  2. Empleneu:
  3. Server Host: localhost
  4. Port: 3306
  5. Database: empresa
  6. Username: admin
  7. Password: AdminPass1!
  8. A la pestanya Driver properties, assegureu-vos que allowPublicKeyRetrieval = true i useSSL = false per a proves locals.
  9. Clic a Test ConnectionFinish.
jdbc:mysql://localhost:3306/empresa?allowPublicKeyRetrieval=true&useSSL=false
  1. Clic a New Database Connection → seleccioneu SQL Server (opció Microsoft).
  2. Empleneu:
  3. Host: localhost
  4. Port: 1433
  5. Database: master (o la vostra BD)
  6. Username: SA
  7. Password: S3cr3tPass!23
  8. A la pestanya Driver properties: encrypt = false per a proves locals sense SSL.
  9. Clic a Test ConnectionFinish.
jdbc:sqlserver://localhost:1433;databaseName=master;encrypt=false
  1. Clic a New Database Connection → seleccioneu Oracle.
  2. Empleneu:
  3. Host: localhost
  4. Port: 1521
  5. Database (Service Name): FREEPDB1
  6. Username: system
  7. Password: S3cr3tPass!
  8. Assegureu-vos que Connection Type és Service Name (no SID).
  9. Clic a Test ConnectionFinish.
jdbc:oracle:thin:@//localhost:1521/FREEPDB1

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

  1. Instal·leu DBeaver Community Edition al vostre equip.
  2. Assegureu-vos que els contenidors Docker de PostgreSQL i MySQL de les sessions anteriors estan en marxa.
  3. Creeu dues connexions a DBeaver: una per a PostgreSQL i una altra per a MySQL (useu les credencials dels exercicis anteriors).
  4. Per a cadascuna de les connexions:
  5. Exploreu l'arbre d'objectes (bases de dades, esquemes, taules).
  6. Obriu l'Editor SQL i executeu una consulta de selecció.
  7. Genereu el DDL d'una taula usant el menú contextual (Generate SQL → DDL).
  8. 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).
  9. 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.