MySQL und MariaDB Installation: Grundlegende Verwaltung
Schritt-für-Schritt MySQL und MariaDB Installation unter Linux, mysql_secure_installation, Datenbanken und Benutzer erstellen, SQL-Grundbefehle, Remote-Zugriff und Performance-Tuning.
PostgreSQL-Installation auf Ubuntu/Debian und RHEL/CentOS, Benutzer und Datenbanken erstellen, grundlegende SQL-Befehle, Remote-Verbindung konfigurieren und Backup-Strategien. Schritt-fur-Schritt-Anleitung.
PostgreSQL ist eines der leistungsstarksten Open-Source-Datenbankverwaltungssysteme der Welt. Mit ACID-Konformitat, erweiterten Datentypen, JSON-Unterstutzung und starker Erweiterbarkeit deckt es ein breites Anwendungsspektrum ab - von Unternehmensanwendungen bis hin zu kleinen Projekten. Diese Anleitung behandelt die Installation, grundlegende Verwaltung und Konfiguration von PostgreSQL.
Auf Ubuntu- und Debian-Systemen kann PostgreSQL aus den offiziellen Repositories installiert werden:
# Paketliste aktualisieren
apt update
# PostgreSQL installieren
apt install -y postgresql postgresql-contrib
# Dienststatus pruefen
systemctl status postgresql
# Automatischen Start aktivieren
systemctl enable postgresql
Fur eine neuere Version konnen Sie das offizielle PostgreSQL-Repository hinzufugen:
# Erforderliche Tools installieren
apt install -y curl ca-certificates
# PostgreSQL-Signaturschlussel hinzufugen
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
# Repository hinzufugen
echo 'deb https://apt.postgresql.org/pub/repos/apt '$(lsb_release -cs)'-pgdg main' > /etc/apt/sources.list.d/pgdg.list
# Aktualisieren und installieren
apt update
apt install -y postgresql-16
# Offizielles PostgreSQL-Repository hinzufugen
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Eingebautes PostgreSQL-Modul deaktivieren
dnf -qy module disable postgresql
# PostgreSQL 16 installieren
dnf install -y postgresql16-server postgresql16-contrib
# Datenbank initialisieren
/usr/pgsql-16/bin/postgresql-16-setup initdb
# Dienst starten und aktivieren
systemctl enable --now postgresql-16
# Dienststatus pruefen
systemctl status postgresql-16
psql --version
# Ausgabe: psql (PostgreSQL) 16.x
# Dienstinformationen
psql -U postgres -c 'SELECT version();'
Bei der Installation wird der Systembenutzer postgres erstellt. So verbinden Sie sich mit der Datenbank:
# Zum postgres-Systembenutzer wechseln
su - postgres
# Mit der PostgreSQL-Konsole verbinden
psql
# Direkt als Root verbinden
sudo -u postgres psql
# Mit einer bestimmten Datenbank verbinden
sudo -u postgres psql -d mydb
-- In der PostgreSQL-Konsole
-- Neuen Benutzer erstellen
CREATE USER appuser WITH PASSWORD 'StarkesPasswort123!';
-- Superuser erstellen (mit Vorsicht verwenden)
CREATE USER adminuser WITH PASSWORD 'AdminPass!' SUPERUSER;
-- Benutzer auflisten
\du
-- Benutzerpasswort andern
ALTER USER appuser WITH PASSWORD 'NeuesPasswort456!';
-- Datenbankerstell-Berechtigung vergeben
ALTER USER appuser CREATEDB;
-- Datenbank erstellen
CREATE DATABASE myapp OWNER appuser ENCODING 'UTF8' LC_COLLATE 'de_DE.UTF-8' LC_CTYPE 'de_DE.UTF-8' TEMPLATE template0;
-- Datenbanken auflisten
\l
-- Mit einer Datenbank verbinden
\c myapp
-- Vollstandige Berechtigungen vergeben
GRANT ALL PRIVILEGES ON DATABASE myapp TO appuser;
-- Schema-Berechtigung (PostgreSQL 15+)
GRANT ALL ON SCHEMA public TO appuser;
-- Datenbank loschen
DROP DATABASE alte_datenbank;
-- Tabelle erstellen
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Daten einfugen
INSERT INTO users (username, email) VALUES ('hans', 'hans@example.com');
-- Daten abfragen
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;
-- Daten aktualisieren
UPDATE users SET email = 'neu@example.com' WHERE id = 1;
-- Daten loschen
DELETE FROM users WHERE id = 5;
-- Tabellen auflisten
\dt
-- Tabellenstruktur anzeigen
\d users
-- Index erstellen
CREATE INDEX idx_users_email ON users(email);
Standardmassig akzeptiert PostgreSQL nur Verbindungen von localhost. Fur den Remote-Zugriff mussen zwei Dateien bearbeitet werden.
# Konfigurationsdatei-Speicherort finden
sudo -u postgres psql -c 'SHOW config_file;'
# Bearbeiten
nano /etc/postgresql/16/main/postgresql.conf
# listen_addresses-Zeile andern
listen_addresses = '*'
# Port (Standard 5432)
port = 5432
nano /etc/postgresql/16/main/pg_hba.conf
# Zeile fur Remote-Verbindungen hinzufugen (am Ende der Datei)
# TYPE DATABASE USER ADDRESS METHOD
host myapp appuser 192.168.1.0/24 scram-sha-256
host all all 0.0.0.0/0 scram-sha-256
# Dienst neu starten
systemctl restart postgresql
# Port mit UFW offnen
ufw allow 5432/tcp
# Mit iptables
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
Den PostgreSQL-Port (5432) dem Internet auszusetzen ist ein Sicherheitsrisiko. Verwenden Sie nach Moglichkeit einen SSH-Tunnel oder VPN. Falls Remote-Zugriff erforderlich ist, beschranken Sie ihn auf bestimmte IP-Adressen.
# Einzelne Datenbank sichern
pg_dump -U postgres myapp > myapp_backup.sql
# Komprimiertes Format (schnellere Wiederherstellung)
pg_dump -U postgres -Fc myapp > myapp_backup.dump
# Alle Datenbanken sichern
pg_dumpall -U postgres > all_databases.sql
# Von einem Remote-Server sichern
pg_dump -h 192.168.1.100 -U postgres myapp > myapp_remote.sql
# Aus SQL-Format wiederherstellen
psql -U postgres myapp < myapp_backup.sql
# Aus komprimiertem Format wiederherstellen
pg_restore -U postgres -d myapp myapp_backup.dump
# Alle Datenbanken wiederherstellen
psql -U postgres < all_databases.sql
# Crontab bearbeiten
crontab -e
# Jede Nacht um 02:00 Uhr Backup erstellen
0 2 * * * pg_dump -U postgres myapp | gzip > /backup/myapp_$(date +\%Y\%m\%d).sql.gz
# Backups alteren als 30 Tage loschen
0 3 * * * find /backup -name 'myapp_*.sql.gz' -mtime +30 -delete
# Dienst starten
systemctl start postgresql
# Dienst stoppen
systemctl stop postgresql
# Dienst neu starten
systemctl restart postgresql
# Konfiguration neu laden (kein Neustart erforderlich)
systemctl reload postgresql
# Protokolle anzeigen
journalctl -u postgresql -f
tail -f /var/log/postgresql/postgresql-16-main.log
PostgreSQL ist ein zuverlassiges und hochleistungsfahiges Datenbanksystem. Vernachlassigen Sie nach der Installation nicht die Sicherheitskonfiguration, fuhren Sie regelmasige Backups durch und konfigurieren Sie die Authentifizierungsmethoden fur den Remote-Zugriff korrekt. PostgreSQL lauft problemlos auf REXE-Servern und liefert zuverlassige Leistung unter hohem Datenverkehr.
PostgreSQL bietet vollstandige ACID-Konformitat, erweiterte Datentypen (JSON, JSONB, Arrays, hstore), Window-Funktionen und starke Erweiterbarkeit. MySQL bietet im Allgemeinen einfachere Installation und Verwaltung, wahrend PostgreSQL bei komplexen Abfragen und grossen Datensatzen besser abschneidet. Fur neue Projekte wird PostgreSQL empfohlen.
Verbinden Sie sich mit sudo -u postgres psql mit der PostgreSQL-Konsole und fuhren Sie dann ALTER USER postgres WITH PASSWORD 'NeuesPasswort'; aus. Um das Systembenutzerpasswort zu andern, verwenden Sie sudo passwd postgres.
Pruefen Sie drei Dinge: 1) Vergewissern Sie sich, dass listen_addresses = '*' in postgresql.conf gesetzt ist, 2) Pruefen Sie, ob Sie eine host-Zeile fur die entsprechende IP in pg_hba.conf hinzugefugt haben, 3) Vergewissern Sie sich, dass Port 5432 in der Firewall geoffnet ist (ufw status oder iptables -L). Denken Sie daran, den Dienst nach Anderungen neu zu starten.
pg_dump erstellt einen konsistenten Snapshot und ist sehr zuverlassig. Verwenden Sie fur grosse Datenbanken -Fc (benutzerdefiniertes Format); dieses Format unterstutzt parallele Wiederherstellung und erzeugt kleinere Dateigrossen. Fur kritische Systeme sollten Sie auch fortgeschrittenere Backup-Methoden wie WAL-Archivierung oder Streaming-Replikation in Betracht ziehen.
PostgreSQL verwendet standardmassig Port 5432. Um ihn zu andern, aktualisieren Sie die Zeile port = 5432 in /etc/postgresql/16/main/postgresql.conf mit der gewunschten Portnummer und starten Sie den Dienst neu. Vergessen Sie nicht, pg_hba.conf und Ihre Verbindungszeichenfolgen ebenfalls zu aktualisieren.
Ja, jede Version kann auf einem anderen Port laufen. Zum Beispiel kann PostgreSQL 14 auf dem Standardport 5432 und PostgreSQL 16 auf Port 5433 laufen. Jede Version hat ihr eigenes Datenverzeichnis und ihre eigene Diensteinheit. Verwenden Sie den Befehl pg_lsclusters, um alle vorhandenen Cluster aufzulisten.
Schritt-für-Schritt MySQL und MariaDB Installation unter Linux, mysql_secure_installation, Datenbanken und Benutzer erstellen, SQL-Grundbefehle, Remote-Zugriff und Performance-Tuning.
Redis und Memcached Installation auf Ubuntu/Debian, Grundbefehle, Persistenz-Einstellungen, TTL-Konfiguration, Redis vs Memcached Vergleich und Anwendungsintegration.
Schritt-fur-Schritt phpMyAdmin Installation auf Apache und Nginx, SSL-Konfiguration, Benutzerverwaltung, IP-Einschraenkungen und Sicherheitshaertung.