Support wiki

MySQL, MariaDB und PostgreSQL

MariaDB / MySQL
MariaDB ist ein freies Datenbankensystem welches durch eine Abspaltung aus dem MySQL-Projekt hervorgegangen ist. MariaDB ist deshalb als MySQL-kompatible Erweiterung zu verstehen, in welche die Funktionen von MySQL automatisch im Hintergrund einfliessen und ein Teil des Datenbanksystemes darstellen. Die MariaDB-Datenbanken werden ebenfalls über phpMyAdmin verwaltet. MySQL- / MariaDB ist für viele, einfache Lesezugriffe und wenig Schreibzugriffe optimiert und ist so für die meisten Webanwendung bestens geeignet.

PostgreSQL
PostgreSQL ist ein komplett freies Datenbanksystem welches von einer Open-Source-Gemeinschaft gepflegt und weiterentwickelt wird. Es eignet sich perfekt für sehr komplexe Operationen und ist bei sehr vielen gleichzeitigen Zugriffen / Abfragen sehr leistungsfähig. Damit geniesst PosgtreSQL gegenüber von MySQL einen grossen Vorteil.

Datenbankverwaltung bei bplaced

Die Datenbankverwaltung (also einzelne Datenbanken hinzufügen, die Zugriffsrechte einer Datenbank bearbeiten oder die Datenbank wieder entfernen) ist bei bplaced direkt im User Control Panel integriert. Weitere Informationen dazu im entsprechenden Artikel.

Administration

     
  • MySQL/Maria-Datenbanken werden über die grafische Oberfläche 'phpmyadmin' verwaltet. Die Oberfläche ist unter myadmin.benutzername.bplaced.net erreichbar
  •  
  • PosgtreSQL-Datenbanken werden über die grafische Oberfläche 'phpPgAdmin' verwaltet. Die Oberfläche ist unter pgadmin.benutzername.bplaced.net erreichbar
Über diese Oberflächen können jeweils Tabellen komfortabel erstellt, durchsucht sowie angezeigt werden. Ab Angebot bplaced pro steht einem auch die Zugriffskontrolle für externe Verbindungen auf die Datenbanken zur Verfügung, damit können Datenbanken direkt mittels einer externen Desktopsoftware verwaltet werden.

Datenbankverwaltungsoberfläche (im Beispiel phpMyAdmin)
Datenbankverwaltungsoberfläche (im Beispiel phpMyAdmin)    e
Für die Anmeldung bei phpMyAdmin oder phpPgAdmin wird jeweils der Benutzername der Datenbank sowie das dazugehörige Passwort benötigt, es kann sich nur in eine bestehende Datenbank angemeldet werden. Nach dem Login sieht man auf der linken Seite den Stammbaum der Datenbank und kann diese entsprechend anwählen. Anschliessend öffnet sich die Übersicht der Tabellen. Über den Abschnitt 'Neue Tabelle in Datenbank erstellen' kann eine neue Tabelle unter der Angabe des Namens sowie der Spaltenanzahl hinzugefügt werden.

Backup importieren & exportieren

Vorhandenes Backup Importieren
     
  • phpMyAdmin (MySQL/MariaDB)
Um ein vorhandenes MySQL-Datenbankbackup zu importieren, navigiert man bei phpMyAdmin direkt zum Reiter 'Importieren' und lädt dort sein Backup hoch. Das Backup kann als '.sql-Datei' oder auch in kompromittierter Variante (gip, bzip2, zip) vorliegen.
     
  • pgMyAdmin (PostgreSQL)
Um ein vorhandenes PostgreSQL-Datenbankbackup zu importieren, navigiert man bei phpPgAdmin nach dem Login zu der Übersicht der Datenbanken (angezeigt wird entsprechend nur die Datenbank in welche man sich eingeloggt hat) und wählt dort im oberen Bereich den Reiter 'SQL' aus. Bei SQL erscheint dann ein grösserer Bereich um SQL-Codes zu verwenden, direkt darunter kann man über 'Datei auswählen' sein Backup hochladen.

Beim Upload gilt es zu beachten, dass der Befehl 'CREATE DATABASE' zuvor aus dem Backup entfernt wurde. Bei bplaced existiert die Datenbank ja bereits, deshalb führt ein erneutes erstellen innerhalb der Datenbank zu einem Fehler.

Datenbankbackup erstellen / Datenbank exportieren
     
  • phpMyAdmin (MySQL/MariaDB)
Um ein frisches Backup der Datenbank anzufertigen, navigiert man bei phpMyAdmin direkt zum Reiter 'Exportieren' und erstellt dort sein Backup der Datenbank. Wichtig dabei ist, dass man auf der linken Seite im Stammbaum zuvor sämtliche Tabellen markiert hat. Bei den Backupeinstellungen kann man das Format bei einer angepassten Exportmethode selbst wählen, am gängigsten ist hier 'SQL'. Desweiteren können auch gewisse Befehle explizit eingebunden oder auch ausgeklammert werden, je nach Wunsch. Das Datenbankbackup wird mit einem Klick auf 'Ok' angefertigt und zum Download angeboten.
     
  • pgMyAdmin (PostgreSQL)

Aufgrund der tief ins System eingreifenden Funktionen (exec) von pgAdmin ist das Erstellen von PostgreSQL-Backups für User aus Sicherheitsgründen deaktiviert. Ein Backup der PostgreSQL-Datenbanken kann jederzeit via Support-Ticket angefragt werden.

Die Feldtypen

VARCHAR (MySQL/MariaDB)
EIne Zeichenfolge mit variabler Länge.
Character varying (PostgreSQL)
Eine Zeichenkette mit Höchstgrenze an Zeichen.
Text
Zeichenketten von maximal 65 535 Zeichen.
LONGTEXT (nur MySQL/MariaDB)
Zeichenketten mit einer Länge von maximal 16.777.215 Zeichen.
INT (bei PostgreSQL: Integer)
Ganzzahl von -2.147.283.648 bis 2.147.283.647 oder bei ausschließlich positiven Zahlen bis 4.294.967.295.
FLOAT (bei PostgreSQL: Real)
Fließkommazahl von -1E+37 bis +1E+37. Die Genauigkeit liegt bei sechs Dezimalstellen. Dieser Feldtyp ist inexakt, sodass Werte beizeiten als Annäherungswerte gespeichert werden können, was zu Abweichungen beim Speichern und erneuten Auslesen führen kann.
DECIMAL (bei PostgreSQL: Numeric)
Eine Zahl mit beliebiger Präzision. Dieser Feldtyp kann im Gegenteil zu FLOAT exakte Berechnungen ausführen und eignet sich so beispielsweise zur Speicherung von Geldbeträgen. Die Länge muss nicht angegeben, aber kann sowohl in der Form gesamstellen, nachkommastellen angegeben werden, als auch in der Form stellen. Bei Verwendung letzterer werden keine Nachkommastellen vorgesehen.
Die ID
Die Spalte id sollte in einer Tabelle der Übersichtlichkeit halber die erste sein. Als Feldtyp wird INT mit einer Länge von 11 gewählt. Das Extra auto_increment erhöht den Wert des Feldes für jeden Datensatz automatisch. Zudem sollte noch der Primärschlüssel gewählt werden, damit eine einmalige Idenfikationsnummer erzwungen wird und doppelte Werte durch menschliches Versehen ausgeschlossen werden können.

Verbindung zur Datenbank aufbauen

MySQL/MariaDB
Je nach Treiber verwendet man bei MySQL/MariaDB entweder mysqli_connect oder mysqli::__construct() um zwischen dem Script und dem Datenbankenserver eine Verbindung herzustellen. Die jeweiligen Verbindungsfunktionen authentifizieren den PHP-Interpreter für den Datenbankzugriff. Dazu müssen die Adresse des Datenbankservers (auf dem Webspace ist dies 'localhost'), der Benutzer der Datenbank, der Datenbanknamen selbst sowie das Passwort übergeben werden.

Im folgenden eine erste Verbindung zur Datenbank (im Beispiel wird MySQLi verwendet):
<?php
$link = mysqli_connect("localhost", "dbnutzer", "passwort", "dbname");

if (!$link) {
    echo "Fehler: es konnte keine Verbindung zur Datenbank aufgebaut werden" . PHP_EOL;
    echo "Debug-Fehlernummer: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debug-Fehlermeldung: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Erfolg: es konnte eine erfolgreiche Verbindung mit der Datenbank aufgebaut werden.  Die Datenbank \"datenbank\" ist toll." . PHP_EOL;
echo "Host-Informationen: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);
?>
PHP-Code
PostgreSQL
Bei PostgreSQL Datenbanken wird als Treiber pg_connect() verwendet um zwischem dem Script und dem Datenbankserver eine Verbindung herzustellen. Die jeweiligen Verbindungsfunktionen athentifizieren den PHP-Interpreter für den Datenbankzugriff. Dazu müssen die Adresse des Datenbankservers (auf dem Webspace ist dies jeweils 'localhost'), der Datenbankname, der Benutzer der Datenbank sowie das Passwort übergeben werden. Im unteren Beispiel wird auch der Port mitgeliefert, dies ist jedoch optional.

Im folgenden eine erste Verbindung zur Datenbank:
<?php
$dbconn3 = pg_connect("host=localhost port=5432 dbname=datenbankname user=datenbankbenutzer password=datenbankpasswort");
?>
PHP-Code
Externe Zugriffe auf die Datenbank sind über die Zugriffskontrolle möglich, die Zugriffskontrolle ist ab dem Angebot bplaced pro verfügbar.