Instal·lació de SGBD
Requisits previs a la instal·lació
Abans d'instal·lar qualsevol SGBD en un entorn real cal avaluar i preparar el sistema amfitrió. Una instal·lació feta sense planificació pot causar problemes de rendiment, seguretat i mantenibilitat difícils de corregir a posteriori.
Requisits de maquinari (referència per a entorn de proves)
| Recurs | PostgreSQL 18 | MySQL 8.4 LTS | SQL Server 2025 | Oracle 21c XE |
|---|---|---|---|---|
| CPU (mínima) | 1 core | 1 core | 2 cores | 1 core |
| RAM (mínima) | 256 MB | 512 MB | 2 GB | 2 GB |
| RAM (recomanada) | 2+ GB | 2+ GB | 4+ GB | 4+ GB |
| Espai en disc | 500 MB + dades | 500 MB + dades | 6 GB | 10 GB |
| Arquitectura | x86-64, ARM64 | x86-64, ARM64 | x86-64 (ARM en preview) | x86-64 |
SQL Server i Oracle en ARM
Microsoft SQL Server no té suport oficial estable per a arquitectura ARM (Apple Silicon M1/M2/M3) en Docker. En Mac amb processador Apple Silicon, useu la imatge --platform linux/amd64 o considereu alternatives com Azure SQL Edge (mcr.microsoft.com/azure-sql-edge). Oracle XE tampoc té imatge ARM oficial; useu Colima o una màquina virtual x86.
Requisits de sistema operatiu
- PostgreSQL: Linux (Debian/Ubuntu, RHEL/Rocky), Windows Server, macOS
- MySQL / MariaDB: Linux, Windows, macOS
- SQL Server: Linux (Ubuntu 20.04/22.04, RHEL 8/9), Windows Server 2019/2022
- Oracle Database: Linux (Oracle Linux, RHEL), Windows Server
Ports de xarxa per defecte
| Motor | Port | Protocol |
|---|---|---|
| PostgreSQL | 5432 | TCP |
| MySQL / MariaDB | 3306 | TCP |
| SQL Server | 1433 | TCP |
| Oracle Database | 1521 | TCP (listener) |
| Oracle Enterprise Manager | 5500 | HTTPS |
Seguretat de ports
Mai exposeu els ports de base de dades directament a Internet sense un tallafoc adequat. En producció, els SGBD han d'escoltar únicament a la interfície de xarxa interna, i l'accés exterior s'ha de fer a través de VPN, SSH tunneling o un proxy d'aplicació.
Usuaris del sistema operatiu
Cada motor crea (o espera trobar) un usuari del sistema operatiu dedicat:
| Motor | Usuari SO | Grup SO |
|---|---|---|
| PostgreSQL | postgres |
postgres |
| MySQL / MariaDB | mysql |
mysql |
| SQL Server | mssql |
mssql |
| Oracle | oracle |
oinstall, dba |
Mètodes d'instal·lació
Existeixen tres aproximacions principals per instal·lar un SGBD:
flowchart LR
A[Mètodes d'instal·lació] --> B[Gestor de paquets\napt / yum / dnf]
A --> C[Docker / Contenidor]
A --> D[Binari / Instal·lador\nmanual]
B --> B1[Pros: integrat amb SO\nActualitzacions automàtiques]
B --> B2[Contres: versió limitada\nal repositori de la distro]
C --> C1[Pros: aïllament, portabilitat\nversió exacta, fàcil de netejar]
C --> C2[Contres: overhead mínim\ncal gestionar volums]
D --> D1[Pros: versió exacta\nconfigurable al màxim]
D --> D2[Contres: gestió manual\nd'actualitzacions i serveis]
Instal·lació via gestor de paquets
# Ubuntu / Debian — repositori oficial PGDG
sudo apt install -y curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
--fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
> /etc/apt/sources.list.d/pgdg.list'
sudo apt update
sudo apt install -y postgresql-17
# Verifica el servei
sudo systemctl status postgresql
# Ubuntu 22.04
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | \
sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | \
sudo tee /etc/apt/sources.list.d/mssql-server-2022.list
sudo apt update
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
sudo systemctl status mssql-server
Instal·lació amb Docker
Docker és el mètode recomanat per a entorns de desenvolupament i aprenentatge. Permet tenir múltiples versions i motors executant-se simultàniament sense conflictes, i netejar-ho tot amb una sola comanda.
Comandes docker run bàsiques
# MySQL 8.4
docker run -d \
--name mysql8 \
-e MYSQL_ROOT_PASSWORD=S3cr3tPass! \
-e MYSQL_DATABASE=prova \
-e MYSQL_USER=admin \
-e MYSQL_PASSWORD=AdminPass1! \
-p 3306:3306 \
-v mysql_data:/var/lib/mysql \
mysql:8.4
# MariaDB 11.4
docker run -d \
--name mariadb11 \
-e MARIADB_ROOT_PASSWORD=S3cr3tPass! \
-e MARIADB_DATABASE=prova \
-e MARIADB_USER=admin \
-e MARIADB_PASSWORD=AdminPass1! \
-p 3307:3306 \
-v mariadb_data:/var/lib/mysql \
mariadb:11.4
docker run -d \
--name sqlserver2025 \
-e ACCEPT_EULA=Y \
-e MSSQL_SA_PASSWORD=S3cr3tPass!23 \
-e MSSQL_PID=Developer \
-p 1433:1433 \
-v sqlserver_data:/var/opt/mssql \
mcr.microsoft.com/mssql/server:2025-latest
# Nota: la contrasenya ha de tenir mínim 8 caràcters,
# majúscules, minúscules, xifres i símbols (política SA)
docker run -d \
--name oracle21xe \
-e ORACLE_PASSWORD=S3cr3tPass! \
-e ORACLE_DATABASE=FREEPDB1 \
-p 1521:1521 \
-p 5500:5500 \
-v oracle_data:/opt/oracle/oradata \
gvenzl/oracle-xe:21-slim
# El port 5500 és Oracle Enterprise Manager Express (HTTPS)
# Pot trigar 2-3 minuts a arrencar la primera vegada
docker logs -f oracle21xe
Docker Compose amb tots els motors
El fitxer docker-compose.yml següent aixeca els quatre motors simultàniament, cadascun en la seva xarxa i amb volums persistents:
version: "3.9"
services:
postgres:
image: postgres:18
container_name: sgbd_postgres
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: S3cr3tPass!
POSTGRES_DB: prova
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- sgbd_net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U admin -d prova"]
interval: 10s
timeout: 5s
retries: 5
mysql:
image: mysql:8.5
container_name: sgbd_mysql
environment:
MYSQL_ROOT_PASSWORD: S3cr3tPass!
MYSQL_DATABASE: prova
MYSQL_USER: admin
MYSQL_PASSWORD: AdminPass1!
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- sgbd_net
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "admin", "-pAdminPass1!"]
interval: 10s
timeout: 5s
retries: 5
sqlserver:
image: mcr.microsoft.com/mssql/server:2025-latest
container_name: sgbd_sqlserver
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: S3cr3tPass!23
MSSQL_PID: Developer
ports:
- "1433:1433"
volumes:
- sqlserver_data:/var/opt/mssql
networks:
- sgbd_net
oracle:
image: gvenzl/oracle-xe:21-slim
container_name: sgbd_oracle
environment:
ORACLE_PASSWORD: S3cr3tPass!
ORACLE_DATABASE: FREEPDB1
ports:
- "1521:1521"
- "5500:5500"
volumes:
- oracle_data:/opt/oracle/oradata
networks:
- sgbd_net
volumes:
postgres_data:
mysql_data:
sqlserver_data:
oracle_data:
networks:
sgbd_net:
driver: bridge
Per aixecar tots els serveis:
Connexió inicial i verificació
Un cop el servei és en marxa, cal verificar que accepta connexions correctament.
Connexió amb el client de línia de comandes
# Des de fora del contenidor (cal tenir psql instal·lat)
psql -h localhost -p 5432 -U admin -d prova
# O entrant al contenidor directament
docker exec -it postgres psql -U admin -d prova
# Comandes de verificació dins psql
\conninfo -- Mostra la connexió activa
SELECT version(); -- Versió del servidor
\l -- Llista de bases de dades
\q -- Sortir
# Entrant al contenidor amb sqlcmd
docker exec -it sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U SA -P "S3cr3tPass!23" -No
# O des de fora si teniu sqlcmd instal·lat
sqlcmd -S localhost,1433 -U SA -P "S3cr3tPass!23" -No
# Comandes de verificació
SELECT @@VERSION;
GO
SELECT name FROM sys.databases;
GO
EXIT
Verificació del servei des del sistema amfitrió
# Comprova que el port respon
nc -zv localhost 5432 # PostgreSQL
nc -zv localhost 3306 # MySQL
nc -zv localhost 1433 # SQL Server
nc -zv localhost 1521 # Oracle
# O amb nmap
nmap -p 5432,3306,1433,1521 localhost
Resum de ports i credencials de proves
| Motor | Port | Usuari | Contrasenya | Base de dades |
|---|---|---|---|---|
| PostgreSQL | 5432 | admin | S3cr3tPass! | prova |
| MySQL | 3306 | admin (root: S3cr3tPass!) | AdminPass1! | prova |
| SQL Server | 1433 | SA | S3cr3tPass!23 | master (per defecte) |
| Oracle | 1521 | system | S3cr3tPass! | FREEPDB1 |
Credencials d'exemple
Les credencials d'aquest document són exclusivament per a entorns de proves locals. En cap cas les reutilitzeu en entorns de producció o accessibles per xarxa. Useu sempre gestors de secrets (HashiCorp Vault, Docker Secrets, variables d'entorn encriptades) en producció.
Miniactivitat — AC0110
Instal·lació amb Docker
- Instal·leu Docker Desktop (o Docker Engine + Compose) al vostre equip si no el teniu.
- Descarregueu la imatge de PostgreSQL 18 amb
docker pull postgres:18i comproveu la mida de la imatge. - Aixequeu un contenidor PostgreSQL amb el
docker runde la secció anterior. - Connecteu-vos amb
psql(des del contenidor o des de l'amfitrió) i executeuSELECT version();. - Repetiu els passos 3 i 4 per a MySQL 8.4.
- Llisteu els contenidors en marxa amb
docker psi captureu una captura de pantalla. - Atureu i elimineu els contenidors amb
docker stopidocker rm.
Entrega: captura de pantalla de docker ps amb ambdós contenidors actius i de les connexions exitoses.