Auflisten und Umschalten von Datenbanken in PostgreSQL

PostgreSQL, ein leistungsstarkes objektrelationales Open-Source-Datenbanksystem, bietet eine Vielzahl von Werkzeugen und Funktionen für die effiziente Verwaltung von Datenbanken. Unabhängig davon, ob Sie ein Datenbankadministrator oder ein Backend-Entwickler sind, ist das Wissen, wie man Datenbanken auflistet und zwischen ihnen wechselt, grundlegend für die Navigation in Umgebungen mit mehreren Datenbanken.

1. Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass:

  • PostgreSQL auf Ihrem System installiert ist(psql ist zugänglich).

  • Sie haben die entsprechenden Berechtigungen (z.B. Superuser oder Rolle mit Verbindungsrechten).

  • Sie können sich beim PostgreSQL-Server mit einem gültigen Benutzer authentifizieren.

2. Auflisten von Datenbanken in PostgreSQL

🔍 Methode 1: Verwendung des Meta-Befehls psql

Starten Sie das interaktive Terminal psql und führen Sie es aus:

\l

Oder die erweiterte Form:

\list

Dies gibt eine Liste aller Datenbanken zurück:

  • Name

  • Owner

  • Encoding

  • Collation

  • Ctype

  • Access privileges

Methode 2: SQL-Abfrage verwenden

Alternativ können Sie auch diese SQL-Anweisung ausführen:

SELECT datname FROM pg_database WHERE datistemplate = false;

Diese Abfrage schließt Vorlagedatenbanken (template0, template1) aus und zeigt vom Benutzer erstellte Datenbanken an.

🛠️ Methode 3: Befehlszeilen-Shell

Außerhalb von psql, von Ihrem Terminal aus:

psql -U postgres -c "\l"

Sie können auch psql -l verwenden:

psql -l

3. Umschalten von Datenbanken

Im Gegensatz zu einigen anderen RDBMS (z.B. MySQL) unterstützt PostgreSQL nicht den Wechsel von Datenbanken innerhalb der gleichen Sitzung mit einem Befehl wie USE dbname;.

Warum ist das so?

PostgreSQL stellt zur Anmeldezeit eine Verbindung zu einer bestimmten Datenbank her. Um auf eine andere Datenbank zuzugreifen, müssen Sie die Verbindung trennen und neu aufbauen.

Empfohlene Vorgehensweise:

Beenden Sie die aktuelle Sitzung und verbinden Sie sich erneut mit der gewünschten Datenbank:

\q -- Beenden der aktuellen psql-Sitzung

Danach:

psql -U username -d target_database

Oder direkt:

psql -U username -d target_database -h hostname -p port

Beispiel:

psql -U admin -d salesdb

4. Tipps für einen effizienten Multi-Database-Workflow

a. Verwenden Sie .pgpass für passwortloses Umschalten

Erstellen Sie eine .pgpass-Datei, um die Authentifizierung zu automatisieren:

hostname:port:database:username:password

Stellen Sie sicher, dass die Datei die richtigen Berechtigungen hat:

chmod 600 ~/.pgpass

b. Automatisieren mit Shell-Skripten

Erstellen Sie ein Skript zum Auflisten und Umschalten:

#!/bin/bash
echo "Available Databases:"
psql -U postgres -c "\l"
read -p "Enter target DB: " db
psql -U postgres -d "$db"

c. Umgebungsvariablen verwenden

Exportieren Sie die Standard-DB und den Benutzer für einen schnelleren Wechsel:

export PGDATABASE=mydb
export PGUSER=myuser
psql

5. Arbeiten mit PgAdmin und anderen GUIs

In PgAdmin:

  1. Klicken Sie auf die Servergruppe.

  2. Klicken Sie mit der rechten Maustaste → Verbinden mit einer Datenbank.

  3. Verwenden Sie das Dropdown-Menü des Abfragetools, um die Datenbank zu wechseln (erstellt eine neue Registerkarte pro DB).

Viele Tools (DBeaver, DataGrip) ermöglichen mehrere Verbindungen mit Datenbankansichten auf Registerkarten.

6. Bonus: Aktuelle Datenbank prüfen

Finden Sie in psql Ihre aktuelle Datenbank:

SELECT current_database();

Oder verwenden Sie:

\conninfo

Schlussfolgerung

PostgreSQL erlaubt zwar keinen sitzungsinternen Datenbankwechsel wie einige andere SQL-Engines, aber sein robustes Verbindungsmodell gewährleistet eine saubere, konsistente Zugriffskontrolle und Ressourcenverwaltung. Wenn Sie die Auflistungstechniken beherrschen und kluge Praktiken für die Wiederverbindung anwenden, können Sie PostgreSQL-Datenbanken in jeder Umgebung effizient verwalten und zwischen ihnen wechseln – egal ob über CLI, GUI oder Skripte.