Diese Seite behandelt den PostgreSQL-Datenbankserver , und erklärt, wie Sie mit Webmin Tabellen, Benutzer, Gruppen und Daten verwalten.
Inhalt
Einführung in PostgreSQL
Wie der MySQL-Datenbankserver ist PostgreSQL ein kostenloser Datenbankserver, der mehrere Datenbanken und Tabellen unterstützt und es Clients ermöglicht, sie mit SQL abzufragen. Es ist am nützlichsten für Programmierer, die Anwendungen schreiben, die eine Datenbank zum Speichern von Informationen verwenden müssen. Beliebte Sprachen wie Perl, C, Java und PHP verfügen alle über APIs für den Zugriff auf eine PostgreSQL-Datenbank.
Ein PostgreSQL-Server kann mehrere Datenbanken hosten, und jede Datenbank kann mehrere Tabellen enthalten. Eine Tabelle wiederum enthält Felder, die jeweils einen Typ und eine Größe haben. Tabellen enthalten Datensätze, von denen jeder normalerweise Informationen über ein bestimmtes Objekt enthält, z. B. eine Person, ein Produkt oder einen Kauf. Felder können als Spalten in einer Tabelle und die eigentlichen Datensätze als Zeilen betrachtet werden. Einige Felder können auch mehrere Werte enthalten, wie ein Array.
SQL (was für Structured Query Language steht) ist eine Sprache zum Extrahieren von Daten aus oder zum Aktualisieren von Daten in einer Datenbank. Fast alle Datenbanken verwenden SQL, und seine Syntax ist im Allgemeinen für alle verschiedenen Datenbankpakete wie Oracle, PostgreSQL und MySQL gleich. Seine Syntax wird in diesem Kapitel jedoch nicht behandelt.
Pakete für PostgreSQL sind in vielen Linux-Distributionen enthalten und können auf fast allen Unix-Varianten kompiliert und installiert werden. Seine Bedienung ist auf allen Betriebssystemen gleich, und damit auch das Webmin-Modul zur Verwaltung.
PostgreSQL besteht aus einem Serverprozess, der die eigentlichen Datenbankdateien liest und schreibt, und einer Reihe von Clientprogrammen, die mit dem Server kommunizieren. Am häufigsten wird der Befehl psql verwendet, mit dem ein Benutzer SQL-Abfragen ausführen und die Ergebnisse anzeigen kann. Keiner der Clients greift direkt auf die Datenbankdateien zu – das bleibt allein dem Server überlassen.
Alle PostgreSQL-Datenbankdateien werden in einem Verzeichnis wie /var/lib/pgsql oder /usr/local/pgsql gespeichert. Außerdem gibt es mehrere Textkonfigurationsdateien, die den Betrieb des Servers und der Clients beeinflussen. Die wichtigste ist pg_hba.conf, die Client-Hosts auflistet, die sich mit dem Server verbinden dürfen. Dies ist die einzige Datei, die Webmin direkt bearbeitet – alle anderen Datenbankkonfigurationen erfolgen durch eine Verbindung zum Datenbankserver, entweder direkt oder über den Befehl psql.
Das PostgreSQL-Datenbankservermodul
Dieses Modul ermöglicht es einer Administration, Datenbanken, Tabellen, Felder und Datensätze in einem PostgreSQL-Server zu verwalten. In vielerlei Hinsicht ist es dem MySQL Database Server-Modul sehr ähnlich. Wenn Sie auf das Symbol in der Kategorie Server von Webmin klicken, zeigt die Hauptseite eine Liste der vorhandenen Datenbanken auf Ihrem System an, wie in diesem Screenshot gezeigt:
Die Hauptseite des PostgreSQL-Moduls
Wenn Webmin erkennt, dass PostgreSQL nicht installiert ist, nicht initialisiert wurde oder keine Verbindung hergestellt werden kann, wird die Hauptseite nicht wie im obigen Bild angezeigt. Stattdessen wird eine Art Fehlermeldung angezeigt. Die häufigsten werden in den nächsten Absätzen behandelt.
Wenn die Meldung PostgreSQL läuft nicht auf Ihrem System erscheint, müssen Sie den Datenbankserver starten, bevor dieses Modul zur Verwaltung verwendet werden kann. Klicken Sie einfach auf PostgreSQL-Server starten Schaltfläche unten auf der Seite. Wenn Sie möchten, dass es von nun an beim Booten gestartet wird, verwenden Sie das Bootup and Shutdown-Modul (siehe Bootup and Shutdown), um eine neue Aktion zu erstellen, um es zu starten. Bei den meisten Linux-Distributionen enthalten die PostgreSQL-Pakete ein Startaktionsskript namens postgres oder postgresql, das standardmäßig nicht aktiviert ist.
Wenn PostgreSQL von Webmin ausgeführt wird, kennt Webmin den Administrator-Benutzernamen und das Kennwort nicht, die für die Verbindung erforderlich sind, und das Formular *PostgreSQL-Anmeldung* wird auf der Hauptseite angezeigt. Sie müssen gültige Anmeldedaten für Ihren Datenbankserver eingeben, normalerweise für den Postgres-Benutzer, der vollen Zugriff auf alle Datenbanken und Funktionen hat. Die Anmeldung als ein anderer Benutzer mit geringeren Rechten funktioniert möglicherweise zunächst, aber Sie können nicht alle Funktionen des Moduls nutzen. Manchmal ist PostgreSQL so eingerichtet, dass Benutzer mit ihrem Unix-Benutzernamen authentifiziert werden und nicht mit einem separaten Login und Passwort (dem Ident-Authentifizierungsmodus). Wenn dies auf Ihrem System der Fall ist, müssen Sie Als denselben Unix-Benutzer verbinden? überprüfen Feld auf dem Formular.
Wenn eine Fehlermeldung wie The PostgreSQL host configuration file hba.conf wurde nicht gefunden erscheint, dann ist entweder das Modul falsch konfiguriert oder Ihr Server wurde noch nicht erstmalig initialisiert. Viele Paketversionen für Linux-Systeme müssen initialisiert werden, bevor sie verwendet werden können, normalerweise durch Ausführen des Befehls initdb. Wenn das Modul weiß, wie dies auf Ihrem System zu tun ist, wird eine Datenbank initialisieren wird die Schaltfläche angezeigt, auf die Sie klicken können, um den Server zum ersten Mal einzurichten.
Die Fehlermeldung The PostgreSQL client program *psql was not found on your system* weist darauf hin, dass PostgreSQL überhaupt nicht installiert ist oder sich in einem anderen Verzeichnis als dem von Webmin erwarteten befindet. Auf Linux- und FreeBSD-Systemen geht das Modul davon aus, dass Sie die in Ihrer Distribution enthaltenen Pakete für die Datenbank installiert haben, während es auf anderen Betriebssystemen davon ausgeht, dass eine Standardinstallation aus dem Quellcode in /usr/local/pgsql durchgeführt wurde. Wenn Sie es installiert haben und diese Fehlermeldung weiterhin angezeigt wird, müssen Sie den Abschnitt *Konfigurieren des PostgreSQL-Datenbankservermoduls* lesen, um zu erfahren, wie Sie die Pfade anpassen, die das Modul verwendet.
Wenn Sie Linux ausführen und PostgreSQL nicht installiert ist, verwenden Sie das Modul „Softwarepakete“, um alle Pakete, beginnend mit postgres, von der Distributions-CD oder Website zu installieren. Oft gibt es mehrere, wie postgresql, postgresql-server und postgresql-devel. Für andere Betriebssysteme besuchen Sie http://www.postgresql.org/, um die Quellcode-Distribution herunterzuladen, dann zu kompilieren und zu installieren.
Das PostgreSQL-Modul verwendet SQL-Befehle, um Aktionen wie das Erstellen von Tabellen, das Hinzufügen von Feldern und das Bearbeiten von Datensätzen auszuführen. Um diese Befehle auszuführen, muss Webmin eine Verbindung zum Datenbankserver herstellen, was auf zwei Arten erfolgen kann. Es kann entweder den Befehl psql mit den richtigen Parametern ausführen und seine Ausgabe analysieren oder die Perl-DBI-Bibliothek verwenden, um eine direkte Verbindung herzustellen.
Die erstere Methode ist immer verfügbar, da der Befehl psql immer installiert wird, wenn der Datenbankserver installiert ist. Es ist jedoch nicht absolut zuverlässig, da bestimmte Arten von Tabellendaten eine Ausgabe erzeugen, die nicht immer analysiert werden kann. Aus diesem Grund sollten Sie die Perl-Module DBI und DBD::Pg installieren. Wenn eines fehlt, wird unten auf der Hauptseite eine Meldung angezeigt, in der Sie aufgefordert werden, eines oder beide zu installieren, indem Sie auf einen Link klicken. Dadurch gelangen Sie zu einer Seite im Modul Perl-Module, auf der DBI und/oder DBD::Pg für Sie heruntergeladen und installiert werden.
Erstellen einer neuen Datenbank
Wenn PostgreSQL zum ersten Mal installiert wird, wird normalerweise eine Datenbank namens template1 erstellt. Da diese als Vorlage für alle neuen Datenbanken verwendet wird, sollten Sie Ihre eigenen Tabellen erstellen, in denen Ihre Anwendung Daten speichern kann. Gehen Sie dazu wie folgt vor:
- Klicken Sie auf der Hauptseite des Moduls auf den Link *Neue Datenbank erstellen* über oder unter der Tabelle der vorhandenen Datenbanksymbole.
- Geben Sie einen eindeutigen Namen dafür in den Datenbanknamen ein Feld. Dieser sollte nur aus Buchstaben, Zahlen und dem Zeichen _ bestehen.
- Wenn der Datenbankdateipfad Feld ist auf Standard gesetzt , werden die Dateien, die eigentlich die Daten der Datenbank enthalten, im Standardverzeichnis erstellt. Auf Linux-Systemen wird dies normalerweise so etwas wie /var/lib/pgsql/data sein - auf anderen Betriebssystemen wird es wahrscheinlich /usr/local/pgsql/var sein. Um ein anderes Verzeichnis zu verwenden, das als Unix-Benutzer ausgeführt wird (normalerweise postgres), erstellen Sie es zuerst mit dem Befehl mkdir und führen Sie dann initlocation mit dem Verzeichnisnamen als Parameter aus. Wählen Sie dann das Abschnitts-Optionsfeld für den Datenbankdateipfad Feld und geben Sie das Verzeichnis in das angrenzende Textfeld ein. Leider tritt ein Fehler auf, wenn Sie auf Erstellen klicken, es sei denn, PostgreSQL wurde kompiliert, um absolute Datenverzeichnispfade zu unterstützen Taste. Standardmäßig ist diese Funktion nicht aktiviert.
- Klicken Sie auf Erstellen Taste. Die Datenbank wird hinzugefügt und Sie kehren zur Hauptseite des Moduls zurück, die das neue Symbol enthalten sollte. Wenn auf Ihrem Server eine Datenbank namens template1 vorhanden ist, werden alle darin enthaltenen Tabellen oder anderen Objekte in die neu erstellte Datenbank kopiert. Dies kann nützlich sein, wenn Sie viele Datenbanken mit ähnlichen Strukturen hinzufügen möchten.
Eine neue Tabelle erstellen
Eine Tabelle kann jederzeit zu einer bestehenden Datenbank hinzugefügt werden. Jede Tabelle hat ein oder mehrere Felder, von denen jedes einen Typ, eine Größe und andere Attribute hat. Führen Sie die folgenden Schritte aus, um eine Tabelle hinzuzufügen:
- Klicken Sie auf der Hauptseite auf das Symbol für die Datenbank, zu der Sie die Tabelle hinzufügen möchten. Dadurch gelangen Sie zur Datenbankbearbeitungsseite, die in der folgenden Bildschirmshow gezeigt wird und auf der sich ein Symbol für jede vorhandene Tabelle befindet.
- Geben Sie die Anzahl der Felder, die Ihre neue Tabelle haben soll, in die Felder ein Textfeld neben Neue Tabelle erstellen Schaltfläche und klicken Sie dann auf die Schaltfläche. Dadurch wird ein Formular zur Eingabe der Details der neuen Tabelle und ihrer Anfangsfelder angezeigt.
- Wählen Sie einen Namen für die Tabelle und geben Sie ihn in das Feld Tabellenname ein Feld. Der Name muss innerhalb der Datenbank eindeutig sein und darf nur Buchstaben, Ziffern und das Zeichen _ enthalten.
- Jede Zeile der Anfangsfelder table definiert ein Feld, das der neuen Tabelle hinzugefügt wird. Welche Art von Feld hinzugefügt wird, hängt davon ab, was Sie für die Zeile unter jeder der folgenden Spalten eingeben :
- Feldname Der Name für dieses Feld, der innerhalb der Tabelle eindeutig sein muss und nur aus Buchstaben, Zahlen und _ bestehen sollte. Wenn Sie das Feld leer lassen, wird für diese Zeile kein Feld hinzugefügt.
- Datentyp Die Auswahl, die Sie in diesem Menü treffen, bestimmt den Datentyp, der in diesem Feld gespeichert werden kann. Die gebräuchlichsten Typen sind varchar für Textstrings variabler Länge int4 für ganze Zahlen und float4 für Bruchzahlen. Siehe Feldtypen Abschnitt unten für weitere Details.
- Schriftbreite Dieses Feld kann leer gelassen werden, in diesem Fall wird die Standardgröße für den gewählten Typ verwendet. Andernfalls müssen Sie eine Zahl eingeben, die die Anzahl der Zeichen (für char- oder varchar-Felder) oder Ziffern (für numerische Felder) ist, die das Feld speichern kann. Einige Typen wie blob und date erfordern oder erlauben überhaupt keine Angabe eines Typs.
- Feldoptionen Wenn Array? aktiviert ist, ist dieses Feld ein Array, das mehr als einen Wert speichern kann. Wenn Nullen zulassen? aktiviert ist, lässt die Datenbank das Einfügen von SQL-NULL-Werten in dieses Feld zu. Wenn Primärschlüssel? aktiviert ist, ist dieses Feld Teil des Primärschlüssels für die Tabelle. Alle Tabellen sollten einen Schlüssel haben, der normalerweise das erste Feld ist und vom Typ int oder varchar ist. Wann Einzigartig? aktiviert ist, verhindert PostgreSQL, dass mehr als ein Datensatz denselben Wert für dieses Feld hat. Primärschlüsselfelder sind ebenfalls automatisch eindeutig.
- Wenn Sie mit der Eingabe der Felder fertig sind, klicken Sie auf Erstellen Schaltfläche unten auf der Seite. Die Tabelle wird der Datenbank hinzugefügt, und Sie kehren zu der Seite zurück, auf der vorhandene Tabellen aufgelistet sind.
Die Datenbankbearbeitungsseite
Hinzufügen und Bearbeiten von Feldern
Tabellen können neue Felder hinzugefügt und die Namen bestehender Felder geändert werden. Es gibt jedoch keine Möglichkeit, den Größentyp eines Felds zu ändern, es sei denn, Sie löschen es und fügen es erneut hinzu. Wenn ein Feld angelegt wird, enthält es zunächst immer NULL-Werte in bestehenden Zeilen der Tabelle.
Gehen Sie wie folgt vor, um ein Feld hinzuzufügen:
- Klicken Sie auf der Hauptseite des Moduls auf das Symbol für die Datenbank, die die Tabelle enthält. Klicken Sie dann auf das Symbol für die Tabelle selbst – dies bringt Sie zu einer Seite, die die Namen, Typen und Größen vorhandener Felder auflistet, wie im folgenden Screenshot gezeigt.
- Wählen Sie einen Typ für das neue Feld aus dem Menü neben der Schaltfläche *Feldtyp hinzufügen*. Wenn Sie darauf klicken, zeigt Ihr Browser das Felderstellungsformular zur Eingabe der restlichen Details an.
- Wählen Sie einen Namen für dieses Feld, der nur aus Buchstaben, Zahlen und dem Zeichen _ besteht und geben Sie ihn in den Feldnamen ein Textfeld. Keine zwei Felder in derselben Tabelle dürfen denselben Namen haben.
- Geben Sie für ein char- oder varchar-Feld die maximale Anzahl von Zeichen ein, die es in die Typbreite aufnehmen kann Textfeld. Bei einem numerischen Feld müssen Sie stattdessen zwei Zahlen eingeben, die durch ein Komma getrennt sind, z. B. 10,2 . Die erste ist die maximale Anzahl an Stellen, die eine Zahl in diesem Feld speichern kann, und die zweite ist die Anzahl an Stellen rechts vom Dezimalpunkt. Für andere Feldtypen die Typbreite Textfeld erscheint gar nicht.
- Wenn Sie möchten, dass dieses Feld mehrere Werte desselben Typs speichern kann, wählen Sie Ja für das Array-Feld? Möglichkeit.
- Klicken Sie auf Erstellen um das Feld in die Tabelle aufzunehmen, sofern Ihre Eingabe fehlerfrei war.
Die Tabellenbearbeitungsseite
Sobald ein Feld erstellt wurde, können Sie nur seinen Namen ändern, anders als in MySQL, wo sein Typ oder seine Größe geändert werden können. Dies bedeutet jedoch, dass keine Gefahr für die darin enthaltenen Daten besteht. Gehen Sie wie folgt vor, um ein Feld in einer Tabelle umzubenennen:
- Klicken Sie auf der Hauptseite des Moduls auf das Symbol für die Datenbank, die die Tabelle enthält, und dann auf das Tabellensymbol. Dadurch gelangen Sie zur Liste der Felder in der Tabelle, von der ein Beispiel im obigen Screenshot gezeigt wird.
- Klicken Sie auf den Namen des Feldes, das Sie ändern möchten.
- Aktualisieren Sie im Bearbeitungsformular den Feldnamen Textfeld mit einem neuen Namen. Dies muss natürlich den gleichen Namensregeln folgen wie beim Anlegen eines Feldes.
- Klicken Sie auf Speichern Schaltfläche, um die Änderung in der Datenbank vorzunehmen.
Ein Feld löschen
Im Gegensatz zu MySQL hat der PostgreSQL-Datenbankserver keinen eingebauten SQL-Befehl zum Löschen eines Felds aus einer Tabelle. Es ist jedoch möglich, ein Feld zu entfernen, indem Sie eine neue temporäre Tabelle erstellen, in der das Feld fehlt, die alte Tabelle löschen und in temporär auf den ursprünglichen Namen umbenennen. Das funktioniert, und Webmin kann das alles automatisch für Sie erledigen – allerdings gehen dabei einige Informationen wie Indizes und Standardfeldwerte verloren. Die eigentlichen Daten in der Tabelle (abgesehen von denen im gelöschten Feld) sind jedoch sicher.
Wenn Ihre Tabelle keine Indizes oder Felder mit Standardwerten enthält, können Sie fortfahren und ein Feld entfernen, indem Sie diesen Schritten folgen :
- Klicken Sie auf der Hauptseite des Moduls auf das Symbol für die Datenbank, die die Tabelle enthält, und dann auf das Tabellensymbol selbst.
- Klicken Sie auf das Drop-Feld Schaltfläche im Tabellenbearbeitungsformular unterhalb der Liste der vorhandenen Felder. Dadurch gelangen Sie zu einer Seite, die alle Felder in der Tabelle auflistet, neben denen sich unter Drop This One ein Optionsfeld befindet .
- Wählen Sie das Optionsfeld aus, das Sie aus der Tabelle entfernen möchten.
- Aktivieren Sie das Auswahlkästchen zur Bestätigung Kontrollkästchen am Ende des Formulars.
- Klicken Sie auf das Drop-Feld Schaltfläche, um das ausgewählte Feld zu entfernen. Nach dem Löschen wird dieselbe Seite erneut angezeigt, sodass Sie bei Bedarf eine weitere entfernen können.
Feldtypen
PostgreSQL hat eine große Anzahl von Feldtypen, die alle von Webmin unterstützt werden. Allerdings sind nicht alle von ihnen besonders nützlich für die durchschnittliche Datenbank. Die beste Informationsquelle ist die offizielle Dokumentation unter http://www.postgresql.org/docs/7.3/static/datatype.html
PostgreSQL hat mehrere Typen zum Speichern von geometrischen Objekten wie Punkt, Pfad, Rechteck und Kreis sowie Typen für Netzwerkinformationen wie inet, cidr und macaddr. Felder all dieser Typen können mit diesem Modul erstellt und bearbeitet werden, auch wenn sie oben nicht dokumentiert sind. Allerdings unterstützen keine anderen Datenbanken (wie Oracle oder MySQL) diese Typen, daher ist es ratsam, sie zu vermeiden, wenn Sie möchten, dass Ihre Programme datenbankunabhängig sind.
Anzeigen und Bearbeiten von Tabelleninhalten
Mit dem PostgreSQL-Modul können Sie den Inhalt jeder Tabelle in jeder Datenbank anzeigen und bearbeiten, sogar solche ohne Primärschlüssel. Im Gegensatz zum MySQL-Modul kann es mithilfe der speziellen oid-Spalte, die eine eindeutige Kennung für jeden Datensatz enthält, bestimmte zu bearbeitende Zeilen identifizieren.
Gehen Sie folgendermaßen vor, um den Inhalt einer Tabelle anzuzeigen:
- Klicken Sie auf der Hauptseite auf das Symbol für die Datenbank, die die Tabelle enthält, und dann auf das Symbol für die Tabelle selbst.
- Klicken Sie im Tabellenbearbeitungsformular auf Daten anzeigen Knopf unten. Dadurch gelangen Sie auf eine Seite, die eine Tabelle mit den ersten 20 Zeilen der Tabelle enthält.
- Wenn die Tabelle mehr Zeilen enthält, als auf einer Seite angezeigt werden können, werden Anfang und Ende des sichtbaren Bereichs und die Gesamtzahl der Zeilen oben angezeigt. Daneben befinden sich Links- und Rechtspfeile zum Wechseln zu den nächsten oder vorherigen 20 Datensätzen. Im Gegensatz zum MySQL-Modul gibt es auf dieser Seite keine Möglichkeit, nach Datensätzen zu suchen oder zu einer bestimmten Zeilennummer zu springen.
Dieselbe Seite kann auch zum Bearbeiten, Löschen oder Hinzufügen von Datensätzen verwendet werden. Zu bearbeitende Datensätze müssen zuerst mit den Kontrollkästchen rechts neben jeder Zeile oder mit Alle auswählen ausgewählt werden und *Auswahl invertieren Links. Wenn Sie auf *Ausgewählte Zeilen bearbeiten klicken Schaltfläche wird die Seite erneut mit den Werten aller ausgewählten Datensätze in Textfeldern angezeigt. Nehmen Sie die gewünschten Änderungen vor und klicken Sie auf Speichern Schaltfläche unten auf der Seite, um die Datenbank zu aktualisieren. Oder klicken Sie auf Abbrechen wenn Sie die Bearbeitung beenden möchten, ohne Ihre Änderungen zu speichern.
Um Datensätze zu löschen, wählen Sie sie mit denselben Kontrollkästchen und Auswahllinks aus und klicken Sie auf Ausgewählte Zeilen löschen Taste. Die ausgewählten Datensätze werden ohne weitere Bestätigung sofort aus der Datenbank entfernt.
Um einen neuen Datensatz hinzuzufügen, klicken Sie auf die Zeile hinzufügen Schaltfläche unter der Tabelle. Es erscheint eine zusätzliche Zeile mit leeren Textfeldern, in die Sie neue Details eingeben können. Klicken Sie auf Speichern fügt den neuen Datensatz zur Tabelle hinzu und verschiebt die Anzeige, sodass Sie die neue Zeile sehen können. Alternativ können Sie auf Abbrechen klicken wenn Sie Ihre Meinung zum Hinzufügen eines Datensatzes ändern.
Löschen von Tabellen und Datenbanken
Dieses Modul enthält auch Schaltflächen zum Löschen einer Tabelle aus einer Datenbank oder einer ganzen Datenbank und allem darin. Wenn eine Tabelle entfernt wird, gehen alle darin enthaltenen Datensätze und Felder verloren
Gehen Sie zum Entfernen wie folgt vor:
- Klicken Sie auf der Hauptseite des Moduls auf das Symbol für die Datenbank, aus der Sie die Tabelle entfernen möchten, und dann auf das Symbol für die Tabelle selbst.
- Klicken Sie auf die Drop-Tabelle Schaltfläche unter der Liste der Felder. Dadurch gelangen Sie zu einer Bestätigungsseite, die Sie fragt, ob Sie sicher sind, und Ihnen sagt, wie viele Datensätze gelöscht werden.
- Um fortzufahren, klicken Sie auf die Drop-Tabelle Taste erneut. Sobald es entfernt wurde, kehren Sie zur Liste der überlebenden Tabellen in der Datenbank zurück.
Es ist auch möglich, eine ganze Datenbank und alle darin enthaltenen Tabellen und Datensätze zu löschen. Jede Datenbank kann entfernt werden, aber das Löschen von template1 ist eine schlechte Idee, da das Modul eine Verbindung zu ihr herstellt, wenn es die Liste anderer Datenbanken abruft, und davon ausgeht, dass sie immer vorhanden sein wird. Wie üblich gibt es keine Möglichkeit, den Löschvorgang rückgängig zu machen, es sei denn, Sie haben ein Backup erstellt.
Angenommen, Sie möchten eine Datenbank wirklich löschen, gehen Sie folgendermaßen vor :
- Klicken Sie auf der Hauptseite auf das Symbol für die Datenbank, die Sie entfernen möchten.
- Klicken Sie auf Datenbank löschen Schaltfläche unterhalb der Tabellenliste. Es wird eine Bestätigungsseite angezeigt, die Ihnen mitteilt, wie viele Tabellen und Datensätze verloren gehen, wenn Sie fortfahren.
- Um mit dem Löschen fortzufahren, klicken Sie auf Datenbank löschen Schaltfläche und Sie werden zur Hauptseite des Moduls zurückgebracht, wenn es fertig ist.
Es ist möglich, die Datenbank template1 zu entfernen, wenn Sie die Initiale PostgreSQL-Datenbank ändern Feld in der Modulkonfiguration in eine andere Datenbank, die nicht entfernt werden soll.
Ausführen von SQL-Befehlen
Das PostgreSQL-Modul bietet auch eine einfache Schnittstelle zum Ausführen von SQL-Befehlen in einer Datenbank und zum Anzeigen ihrer Ausgabe. Die Schritte zur Verwendung sind :
- Klicken Sie auf der Hauptseite auf das Symbol für die Datenbank, in der Sie Befehle ausführen möchten.
- Klicken Sie auf SQL ausführen Schaltfläche unterhalb der Liste der Tabellensymbole. Dadurch gelangen Sie zu einer Seite, auf der Sie SQL-Befehle eingeben, Befehlsdateien ausführen und Daten in die Datenbank laden können.
- Geben Sie einen beliebigen SQL-Befehl in das Textfeld oben auf der Seite ein und klicken Sie auf Ausführen Taste. Wenn in Ihrer SQL-Syntax ein Fehler aufgetreten ist oder der Befehl nicht ausgeführt werden kann, wird die Fehlermeldung von PosygreSQL angezeigt. Andernfalls wird eine Tabelle mit Ergebnissen aus dem SQL (falls vorhanden) angezeigt. Nur SELECT-Anweisungen erzeugen Ergebnisse – UPDATE, INSERT und andere Befehle, die Datensätze ändern, tun dies nicht.
Im Gegensatz zum MySQL-Modul gibt es keine Befehlshistorie oder Unterstützung für die Ausführung mehrerer SQL-Anweisungen aus einer Datei.
Sichern und Wiederherstellen einer Datenbank
Wenn eine Ihrer Datenbanken wichtige Informationen enthält, sollte sie regelmäßig gesichert werden, falls ein Festplattenausfall oder ein SQL-Fehler zu Datenverlust führt. Es ist auch eine gute Idee, eine Sicherungskopie zu erstellen, bevor Sie einen möglicherweise riskanten Vorgang ausführen, z. B. das Ausführen einer komplexen SQL-Anweisung, die viele Datensätze ändert.
Aufgrund von Änderungen in den Parametern der Befehle pg_dump und pg_restore ermöglicht das Modul das Erstellen und Wiederherstellen von Sicherungen nur bei Verwendung der PostgreSQL-Versionen 7.2 und höher. Wenn Sie eine ältere Version verwenden, sind die in den folgenden Schritten erläuterten Schaltflächen nicht sichtbar.
Gehen Sie wie folgt vor, um mit dem Modul eine Sicherung zu erstellen:
- Klicken Sie auf der Hauptseite auf das Symbol für die Datenbank, die Sie sichern möchten.
- Klicken Sie unterhalb der Tabellenliste auf die Schaltfläche *Backup *. Dadurch gelangen Sie zu einem Formular zur Eingabe des Sicherungsziels und der Optionen.
- Im Pfad der Sicherungsdatei Geben Sie im Feld den vollständigen Dateipfad ein, in den die Sicherung geschrieben werden soll, z. B. /tmp/backup.tar . Die Datei darf nicht bereits existieren - wenn dies der Fall ist, tritt ein Fehler auf, wenn Sie auf Sichern klicken Taste.
- Wählen Sie im Menü Sicherungsdateiformat den Dateityp aus, der erstellt werden soll. Die verfügbaren Optionen sind :*Einfacher SQL-Text *Die Datei enthält eine Reihe von SQL-Befehlen, die die Tabellen in der Datenbank neu erstellen und sie erneut mit Daten füllen. Dieses Format ist insofern praktisch, als Sicherungsdateien manuell bearbeitet werden können, Sie jedoch keine großen Objekte (wie Blobs) in eine SQL-Sicherung aufnehmen oder daraus selektiv wiederherstellen können. *Tar-Archiv *Die Sicherungsdatei ist eine standardmäßige Unix-Tar-Datei, die verschiedene Dateien enthält, die Tabellenstrukturen und -inhalte spezifizieren. Große Objekte werden unterstützt und eine selektive Wiederherstellung ist möglich. *Benutzerdefiniertes Archiv *Die Datei wird im benutzerdefinierten Backup-Format von PostgreSQL vorliegen, das komprimiert ist und große Objekte, Datenausschluss und Neuordnung zum Zeitpunkt der Wiederherstellung unterstützt.
- Um das Backup zu erstellen, klicken Sie unten im Formular auf die Schaltfläche *Backup *. Wenn alles gut geht, werden Sie zur Tabellenliste weitergeleitet - andernfalls wird eine Seite angezeigt, auf der der Backup-Befehl ausgeführt und dessen Fehlerausgabe angezeigt wird.
Wenn Sie eine Datenbank haben, die für einen wichtigen Produktionszweck verwendet wird, sollte sie regelmäßig gesichert werden, z. B. einmal täglich. Anstatt die obigen Anweisungen jeden Tag zu befolgen, können Sie das Modul Geplante Cron-Jobs (in Kapitel 10 behandelt) verwenden, um einen Job zu erstellen, der die Sicherung für Sie durchführt. Um herauszufinden, welcher Befehl ausgeführt werden muss, verwenden Sie die obigen Anweisungen, um zuerst ein Backup zu erstellen, und besuchen Sie dann das Webmin Actions Log-Modul (in Kapitel 54 behandelt), um den verwendeten Befehl anzuzeigen.
Sobald eine Sicherungsdatei erstellt wurde, kann sie auf demselben System oder auf einem anderen Server, auf dem MySQL ausgeführt wird, wiederhergestellt werden. Die Schritte sind :
- Klicken Sie auf der Hauptseite des Moduls auf das Symbol für die Datenbank, in die die Sicherung wiederhergestellt werden soll.
- Klicken Sie auf Wiederherstellen Schaltfläche unterhalb der Tabellenliste, um ein Formular zur Auswahl der Sicherungsdatei aufzurufen.
- Im Pfad der Sicherungsdatei Geben Sie im Feld den vollständigen Pfad zu der Datei mit den PostgreSQL-Sicherungsdaten ein, z. B. /tmp/backup.tar . Diese Datei kann in jedem der auf dem Sicherungsformular verfügbaren Formate vorliegen.
- Normalerweise versucht der Wiederherstellungsprozess, Tabellen neu zu erstellen, bevor Daten darin wiederhergestellt werden. Um dies zu vermeiden, ändern Sie die Option Nur Daten wiederherstellen, keine Tabellen? Feld auf Ja . Dies funktioniert nur, wenn alle Tabellen in der Sicherung bereits vorhanden sind. Alle aktuell enthaltenen Daten werden mit wiederhergestellten Datensätzen kombiniert.
- Normalerweise schlägt der Wiederherstellungsprozess fehl, wenn eine Tabelle in der Sicherung bereits in der Datenbank vorhanden ist. Um vorhandene Tabellen vor der Wiederherstellung zu löschen, ändern Sie die Option Tabellen vor der Wiederherstellung löschen? Feld auf Ja . Es macht keinen Sinn, sowohl dieses als auch das vorherige Feld auf Ja zu setzen .
- Klicken Sie auf Wiederherstellen Schaltfläche zum erneuten Laden von Daten und Tabellen aus der Sicherungsdatei. Wenn etwas schief geht, wird eine Fehlermeldung angezeigt, die die Ausgabe des Befehls pg_restore anzeigt. Andernfalls kehren Sie zur Liste der Tabellen in der Datenbank zurück.
PostgreSQL-Benutzer verwalten
Wie zu erwarten, erlaubt der PostgreSQL-Datenbankserver nicht einfach jedem, sich zu verbinden und mit der Manipulation von Daten zu beginnen. Stattdessen verifiziert es Clients, indem es sie auffordert, einen Benutzernamen und ein Passwort zu senden, die es mit seiner eigenen internen Benutzerliste abgleicht. Diese Liste der Datenbankbenutzer ist völlig getrennt von der Unix-Benutzerliste in der Datei /etc/passwd.
Standardmäßig wird nur der Benutzer postgres existieren und er wird vollen Zugriff auf alle Datenbanken und Tabellen haben. Wenn Sie eine Anwendung schreiben, die eine Datenbank verwendet, sollte ein neuer Benutzer für diese Anwendung erstellt werden, unter dem Sie sich anmelden können. Wenn mehrere Personen mit dem psql-Befehl oder anderen Client-Programmen auf Ihre Datenbank zugreifen, sollte jeder sein eigenes Login und Passwort haben.
Gehen Sie wie folgt vor, um einen neuen Nutzer hinzuzufügen:
- Klicken Sie auf der Hauptseite des Moduls auf PostgreSQL-Benutzer Symbol. Dadurch gelangen Sie zu einer Liste bestehender Benutzer und ihrer Fähigkeiten, wie im folgenden Screenshot gezeigt.
- Klicken Sie auf den Link Neuen Benutzer erstellen über oder unter der Liste, wodurch das Benutzererstellungsformular angezeigt wird.
- Geben Sie unter Benutzername einen eindeutigen Namen für den Benutzer ein, der nur aus Buchstaben, Ziffern und dem Zeichen _ besteht Feld.
- Um ein Passwort für diesen Benutzer festzulegen, wählen Sie das zweite Optionsfeld im Feld Passwort Feld und geben Sie ein Passwort in das Textfeld daneben ein. Wenn Keine ausgewählt ist, kann sich der Benutzer nicht anmelden, es sei denn, der Server wurde so konfiguriert, dass er Verbindungen ohne Passwort zulässt (wie im Abschnitt *Einschränken des Client-Zugriffs* erklärt).
- Wenn Sie möchten, dass dieser Benutzer seine eigenen Datenbanken erstellen kann, ändern Sie die Option Darf Datenbanken erstellen? Feld auf Nein . Nur der Hauptverwaltungsbenutzer (postgres) muss dies wirklich können.
- Um diesem Benutzer Rechte zum Bearbeiten und Erstellen von PostgreSQL-Benutzern zu geben, ändern Sie die Einstellung Kann Benutzer erstellen? Feld auf Ja . Auch dies sollte normalerweise auf Nein belassen werden .
- Das Gültig bis Feld steuert, wie lange dieser Benutzer verwendet werden kann. Wenn für immer ausgewählt ist, hat es kein Ablaufdatum - aber wenn die zweite Option ausgewählt und ein Datum im Format JJJJ-MM-TT in das Textfeld eingegeben wird, kann das Konto nach diesem Datum nicht mehr verwendet werden.
- Klicken Sie auf Erstellen klicken, um das neue Konto zur Benutzerliste von PostgreSQL hinzuzufügen. Personen oder Programme können sich sofort als dieser Benutzer anmelden. Häufig ist der Datenbankserver standardmäßig so eingerichtet, dass sich jeder lokale Benutzer anmelden kann, ohne überhaupt ein Passwort angeben zu müssen. Um dies zu ändern, siehe Einschränken des Client-Zugriffs Sektion.
- Um genau zu konfigurieren, auf welche Tabellen und Ansichten dieser neue Benutzer zugreifen kann, befolgen Sie die Anweisungen im Abschnitt *Objektberechtigungen bearbeiten*.
Bestehende PostgreSQL-Benutzer
Sobald ein Benutzer erstellt wurde, kann er bearbeitet werden, indem Sie auf seinen Namen in der Benutzerliste klicken, die im obigen Screenshot gezeigt wird. Dadurch gelangen Sie zum Bearbeitungsformular, das fast identisch mit dem Benutzererstellungsformular ist, außer dass der Name des Benutzers nicht geändert werden kann. Wenn Sie das Passwort, das Ablaufdatum und andere Felder geändert haben, klicken Sie auf Speichern Schaltfläche, um die Änderungen zu aktivieren.
Ein Benutzer kann auch gelöscht werden, indem Sie auf Löschen klicken Schaltfläche auf seiner Bearbeitungsseite. Achten Sie darauf, den Postgres-Benutzer nicht zu entfernen, da er normalerweise von diesem Webmin-Modul verwendet wird, um sich bei PostgreSQL anzumelden. Tatsächlich kann sogar das Bearbeiten dieses Benutzers Probleme verursachen, wenn Sie ein Ablaufdatum festlegen oder ihm die Möglichkeit nehmen, Datenbanken oder andere Benutzer zu erstellen.
Wie viele andere Module kann dieses Modul so konfiguriert werden, dass es automatisch einen PostgreSQL-Benutzer erstellt, aktualisiert oder löscht, wenn ein Unix-Benutzer hinzugefügt, geändert oder entfernt wird. Dies kann nützlich sein, wenn Sie einigen Unix-Benutzern auf Ihrem System den Zugriff auf Datenbanken erlauben und ihre Passwörter synchron halten möchten.
Gehen Sie zum Einrichten der Synchronisierung wie folgt vor:
- Klicken Sie auf der Hauptseite des Moduls auf PostgreSQL-Benutzer Symbol und scrollen Sie nach unten zum Formular unter der Liste der vorhandenen Konten.
- Wenn Sie möchten, dass für jeden neuen Unix-Benutzer ein neuer PostgreSQL-Benutzer erstellt wird, aktivieren Sie das Kontrollkästchen *Neuen PostgreSQL-Benutzer hinzufügen, wenn ein Unix-Benutzer hinzugefügt wird*. Automatisch erstellte Benutzer haben jedoch keine spezifischen Objektberechtigungen.
- Wenn Sie möchten, dass die Passwörter von PostgreSQL-Benutzern geändert werden, wenn das Gleiche mit übereinstimmenden Unix-Benutzern passiert, aktivieren Sie das Kontrollkästchen *Einen PostgreSQL-Benutzer aktualisieren, wenn der übereinstimmende Unix-Benutzer geändert wird*.
- Damit ein PostgreSQL-Benutzer gleichzeitig mit dem gleichnamigen Unix-Benutzer gelöscht wird, aktivieren Sie das Kontrollkästchen *PostgreSQL-Benutzer löschen, wenn der entsprechende Unix-Benutzer gelöscht wird*.
- Klicken Sie auf Speichern Schaltfläche, um die neuen Synchronisationseinstellungen zu aktivieren.
PostgreSQL-Gruppen verwalten
PostgreSQL führt seine eigene interne Liste von Gruppen, von denen jede null oder mehr Benutzer enthalten kann. Gruppen sind am nützlichsten, wenn Sie Objektberechtigungen zuweisen, da sie es Ihnen ermöglichen, vielen Benutzern gleichzeitig Zugriff auf eine Tabelle oder Ansicht zu gewähren. Abgesehen davon spielen sie keine Rolle bei der Zugriffskontrolle oder Authentifizierung.
Gehen Sie zum Erstellen einer Gruppe wie folgt vor:
- Klicken Sie auf der Hauptseite des Moduls auf die PostgreSQL-Gruppen Symbol. Ihr Browser zeigt eine Tabelle bestehender Gruppen und ihrer Mitglieder an, falls vorhanden. Bei der Erstinstallation von PostgreSQL werden keine Gruppen definiert.
- Klicken Sie auf Neue Gruppe erstellen Link, um zum Gruppenerstellungsformular zu gelangen.
- Geben Sie einen Namen bestehend aus Buchstaben, Zahlen und dem Zeichen _ in den Gruppennamen ein Feld. Keine andere Gruppe oder kein anderer Benutzer darf denselben Namen haben.
- Belassen Sie die Gruppen-ID Feld unverändert, da die ID automatisch von Webmin gewählt wird.
- Wählen Sie unter Mitglieder die Benutzer aus, die Mitglieder dieser Gruppe werden sollen aufführen. In den meisten Browsern können Sie bei gedrückter Strg-Taste klicken, um mehr als einen Benutzernamen auszuwählen, oder bei gedrückter Umschalttaste klicken, um einen ganzen Bereich auszuwählen.
- Klicken Sie auf Erstellen um die Gruppe hinzuzufügen. Object permissions can now be assigned to it, as explained in the Editing object permissions Sektion.
Just like a user, a group that you have created can be edited by clicking on its name in the list on the PostgreSQL Groups page, changing the name or membership list on the editing form and hitting Save . Or it can be deleted by clicking the Delete button on the same form.
Restricting client access
Usually, the default PostgreSQL configuration allows any user to connect to the database server from the same system without needing to login, but prevents all remote access. If you want to allow clients to connect from other systems (for example if you are setting up a database server that will be accessed from a separate web server), then PostgreSQL needs to be configured to allow this.
To grant access to another host, follow these instructions :
- On the module's main page, click on the Allowed Hosts icon. You will be taken to a page listing hosts from which connections are allowed, the databases clients can access and the authentication modes used. Typically, only local connections and those from 127.0.0.1 will be allowed initially.
- Click on the Create a new allowed host link above or below the list to bring up the host creation form.
- In the Host address field, select Single host and enter the IP or hostname of the remote client system into the adjacent field. Alternately, to allow an entire LAN select Network and enter the network address (like 192.168.1.0 ) and netmask (like 255.255.255.0 ) into the fields next to it.
- To give the specified host or network access to all databases on your server, leave the Database field set to All databases . Otherwise, make a selection from the menu to limit the client to just that one. If you want to grant a client access to two databases, you will need to add two host entries each with a different choice selected from Database menu.
- In the Authentication mode field, select Plaintext password . The option No authentication required will also allow users on the client system to connect, but without needing to provide a valid password. Clearly, this is not very secure.
- Hit the Create button to add the new allow host entry.
If your system has multiple users, each of whom has a data in a PostgreSQL database that belongs to them, you should not allow them to login to the database server without a password. By default, PostgreSQL allows exactly this, which is not particularly secure! Fortunately, it can be easily fixed. However, there is a risk that you will lock Webmin itself out of the database, as it is often set up by default to login as the user postgres without a password.
Follow the instructions below to re-configure the module to login with a password, and to force local users to do the same thing :
- On the module's main page, click on the PostgreSQL Users icon and then on the postgres user to bring up its editing form.
- Select the second radio button for the Password field and enter a nice secure password into the adjacent text field. Then click Save .
- Go back to the module's main page, and hit the Module Config link.
- In the Administration password field, select Set to and enter the password you chose into the text field. Then click Save at the bottom of the form.
- Click on the Allowed Hosts icon, and then on Local connection in the Host address Säule. Change the *Authentication mode* field to Plaintext password , and click the Save Taste. After your browser returns to the list of allowed hosts, click on 127.0.0.1 and make the same change.
- Return to the module's main page. If all went well, you will still be able to see and manage databases, and all users will require a password to connect.
When a client connects to the database server, PostgreSQL checks the host entries on the Allowed Hosts page in order. As soon as it finds one that matches the client address and requested database, the authentication mode for that entry is used. You can use this feature to block certain hosts while allowing all others by creating a host entry with the *Host address *field set to the IP you want to block, and the Authentication mode set to Reject connection . This entry must appear in the list above any broader entry that would allow the same client.
Because new allowed host entries are always added to the end of the list, the page has a feature for moving around. The up and down arrows under the Move column in the list can be clicked on to move an entry up or down one place respectively.
Editing object privileges
Each PostgreSQL object (a table, view, index or sequence) has an owner, which is the user who created it. By default, only the owner can select data from or update records in an object, which is not too useful if your server has multiple users who will all need access to the same tables. Fortunately, it is possible to grant access to database objects to other users or groups, by following the steps below :
- On the module's main page, click on the Granted Privileges icon. Assuming you actually have some tables in your databases, this will bring up a page listing all existing objects and their current permissions.
- Click on the name of the object that you want to grant access to, which will take you to its privileges editing form.
- The Grant privileges to table lists all users and groups to whom access has been granted, followed by a blank row for adding a new one. Most of the time, it will just contain that one empty row though. In the User column, select the name of the user or group to grant privileges to from the menu, or choose Everyone to grant access to all PostgreSQL users. In the Privileges column, check the boxes for the rights that should be granted to the chosen user or group. The available options are their meanings are :*SELECT *When checked, the user will be able to view records in this table or view with an SQL SELECT query. *UPDATE *When chosen, this option gives users the ability to update existing records in the table. *INSERT *This option gives users the right to add new records to the table with an SQL INSERT statement. *DELETE *When checked, the user will be able to delete existing records from the table. *RULE *Allows the user to create of rules on the table or view. A rule is an piece of SQL code that is executed to transform data inserted, updated or deleted in the table. *REFERENCES *Allows the user to create a field that references this table as a foreign key. *TRIGGER *When checked, the user will be able to create triggers for this table. Because the table only displays one empty row at a time, you will need to save and re-edit the object permissions if you want to grant access to more than one user. If several users are to be given the same permissions, it is better to put them in a group and grant access to the group instead. # Hit the Save button at the bottom of the page to make the new permissions active.
Unlike MySQL, there is no way to give a user access to an entire database, or just to a field within a table. All privileges are granted at the table level only.
Module access control
As WebminUsers explains, it is possible to create a Webmin user who has access to only a subset of the features of some modules. In the case of the PostgreSQL Database Server module, you can limit a user to being able to manage tables and fields in specific databases, and prevent him from editing users, groups or granted permissions. This can be useful if various databases on your server are owned by different people, and you want to give each of them a Webmin login to manage only those that belong to them.
Once a user has been given access to the module, to limit him to only certain databases the steps to follow are :
- In the Webmin Users module, click on PostgreSQL Database Server next to the name of a user or group who has access to the module.
- On the access control form, change the Can edit module configuration? Feld auf Nein . This is necessary to prevent the user changing the programs that the module uses for accessing the database.
- In the Databases this user can manage field, choose the Selected Möglichkeit. Then select the databases he should have access to from the list below.
- Change the Can create new databases? Feld auf Nein . There is no reason that a restricted user of this type should be able to add new databases.
- Unless you want the user to be able to delete his own databases, change the Can drop databases? Feld auf Nein . Leaving it set to Yes is harmless though, as he will only be able to delete those that you have granted him access to.
- Change the Can stop and start PostgreSQL server? Feld auf Nein .
- Change the Can edit users, groups, hosts and grants? Feld auf Nein , so that he cannot create a new PostgreSQL user with access to all databases.
- Set the Can create backups? Feld auf Nein , as giving a user the rights to make a backup may allow him to overwrite files on your system.
- The Can restore backups? field can be safely set to Yes , as there is no danger in allowing a user to re-load data into his databases from a backup file.
- Finally, to make the new access control restrictions active, click Save .
Configuring the PostgreSQL Database Server module
Like most other modules, this one has several options that you can set by clicking on the Module Config link in the top-left corner of its main page. Those fields listed under *Configurable option* relate to its connection to the database and user interface, while those under System configuration define the paths to the PostgresSQL programs and files.
Unless you have installed the database server in a different directory to the default for your operating system, fields in the second section do not generally need to be changed. This can happen if you installed PostgreSQL from the source code instead of using the package supplied with your Linux distribution, or if you have two copies of PostgreSQL installed and are configuring a clone of the module (covered in WebminConfiguration) to manage the second install.