Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

MariaDB für Hoster

MariaDB als Datenbank einer Exponential-Website aus Sicht eines Hosters - der gemeinsame Treiber mysqli, utf8mb4 und InnoDB, die Rechte, die der Benutzer einer Website braucht, Einstellungen, Installation, der…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/hosting/basics/mariadb-for-hosts.md

On this page

This page is a translation. Read the English original

MariaDB für Hoster

Diese Seite ist für Systemadministratoren und Support-Mitarbeitende bei einem Hosting-Anbieter, die MariaDB-Datenbanken für Exponential-Websites bereitstellen, die übliche Datenbank, die ein Hosting-Panel anlegt. Sie beantwortet: wie MariaDB angesteuert wird, wie Sie die Datenbank und den Benutzer einer Website anlegen, worauf Sie bei Zeichensätzen achten müssen und wie Sie sichern. MariaDB ist die vierte in der offiziellen Reihenfolge und der MySQL-kompatible Server, den das Projekt bevorzugt. Quellen: Datenbankunterstützung und Kapitel 9.3.

Inhalt

  1. Ein Treiber für MariaDB und MySQL
  2. Versionen
  3. Eine Datenbank pro Website anlegen
  4. Einstellungen und Installation
  5. Zeichensätze
  6. Backups
  7. Probleme und ihre Ursachen
  8. Checkliste
  9. Verwandte Seiten

Ein Treiber für MariaDB und MySQL

MariaDB läuft mit demselben Treiber wie MySQL, eZMySQLiDB (lib/ezdb/classes/ezmysqlidb.php), auf der PHP-Erweiterung mysqli. Alles auf MySQL für Hoster gilt; diese Seite behandelt, was ein Hoster tun muss und was sich unterscheidet.

  • Der Setup-Assistent führt es als „MySQL Improved“.
  • exp:install --db=mariadb ist dasselbe wie --db=mysql.
  • Der Kickstarter nimmt [database_choice] Type=mysqli (mysql wird akzeptiert).
  • MariaDB ist nicht in der CI des Projekts; der Job für MySQL 8.0 testet denselben Treiber, und MariaDB 10.5 läuft auf dem Entwicklungsserver des Projekts (Testabdeckung).

Versionen

Die Untergrenze des Assistenten ist 4.1.1 (die MySQL-Nummer in eZSetupDatabaseMap()), was keine Empfehlung ist. Betreiben Sie ein Release, das Ihr Hersteller noch mit Sicherheitskorrekturen versorgt, mit utf8mb4 und InnoDB (Versionen).

Eine Datenbank pro Website anlegen

Die Installer legen weder Datenbanken noch Benutzer an. Es ist kein globales Recht nötig:

CREATE DATABASE <customer> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '<customer>'@'localhost' IDENTIFIED BY '<a strong password>';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
      LOCK TABLES, CREATE TEMPORARY TABLES
   ON <customer>.* TO '<customer>'@'localhost';

LOCK TABLES und CREATE TEMPORARY TABLES stehen in der Liste, weil lock() des Treibers LOCK TABLES verwendet und der Kernel für manche Vorgänge temporäre Tabellen anlegt. Es ist kein SUPER und kein Recht zum Auflisten von Datenbanken nötig.

Hinweis Wenn ein Control Panel die Datenbank anlegt, prüfen Sie seinen Standardzeichensatz und die Rechte, die es vergibt, gegen die Anweisungen oben; wie Sie sie setzen, steht in der Dokumentation Ihres Panels. Der Assistent lehnt eine Datenbank ab, deren Zeichensatz nicht UTF-8 ist (Datenbanken und Benutzer in Control Panels).

Einstellungen und Installation

[DatabaseSettings]
DatabaseImplementation=ezmysqli
Server=localhost
# empty: 3306
Port=
User=<customer>
Password=<the password>
Database=<customer>
# a Unix socket instead of host and port
Socket=disabled
Charset=utf-8
UsePersistentConnection=disabled
EXP_INSTALL_DB_PASSWORD='<the password>' php bin/php/console exp:install --apply --db=mariadb \
    --db-host=127.0.0.1 --db-name=<customer> --db-user=<customer> --allow-root-user

Der Installer legt InnoDB-Tabellen an, wenn der Server InnoDB anbietet; Transaktionen brauchen es. Für eine ältere Installation listet php bin/php/ezconvertmysqltabletype.php --list die Tabellentypen auf, und --newtype=InnoDB konvertiert sie.

Lese-Replikate. UseSlaveServer=enabled mit SlaveServerArray[] und den zugehörigen Schlüsseln schickt Lesezugriffe an ein Replikat, das pro Anfrage zufällig gewählt wird; Schreibzugriffe gehen an Server. MySQL und MariaDB sind die einzigen Engines mit eingebauter Aufteilung von Lesezugriffen (Kapitel 9.3, Replikate).

Zeichensätze

  • Legen Sie die Datenbank in utf8mb4 an. Der Installer legt seine Tabellen ohne eigenen Zeichensatz an, sodass sie den Standard der Datenbank übernehmen.
  • Die Verbindung: Charset=utf-8 (der Standard) wird als utf8 an den Server gesendet, was MariaDB als das Drei-Byte-utf8mb3 behandelt. Zeichen außerhalb der Basic Multilingual Plane, etwa Emoji, können nicht durch die Verbindung gehen, auch wenn die Tabellen utf8mb4 sind. Halten Sie die Datenbank trotzdem in utf8mb4.
  • Wenn sich der Zeichensatz der Verbindung nicht setzen lässt, läuft der Treiber weiter und protokolliert „could not set the connection charset“, aber nur, wenn Warnungen protokolliert werden (site.ini [DebugSettings] AlwaysLog[]=warning). Text kommt dann mit ? anstelle von Zeichen zurück.

Die Seite Systeminformationen warnt, wenn der Zeichensatz der Verbindung nicht UTF-8 ist.

Backups

mariadb-dump --single-transaction -u <customer> -p <customer> > <customer>.sql
mariadb -u <customer> -p <customer> < <customer>.sql

--single-transaction ergibt einen konsistenten Dump von InnoDB-Tabellen, ohne sie zu sperren; der ältere Name mysqldump funktioniert auch. Befehle mit einem Passwort auf der Kommandozeile zeigen es anderen Benutzern der Maschine; bevorzugen Sie die Abfrage oder eine Optionsdatei. Ein vollständiges Backup enthält außerdem var/storage, settings/override und settings/siteaccess.

Probleme und ihre Ursachen

SymptomUrsache
Die Fehlerseite, dass die Datenbank nicht erreichbar istfalscher Host, Benutzer, falsches Passwort oder falsche Datenbank
Der Assistent lehnt den Zeichensatz der Datenbank abdie Datenbank wurde in latin1 oder einem anderen Ein-Byte-Zeichensatz angelegt; legen Sie sie in utf8mb4 neu an
Text mit ? an der Stelle von Buchstaben mit Akzentdie Verbindung ist auf den Standardzeichensatz des Servers zurückgefallen
Die Tabellen einer Erweiterung sind nicht InnoDBmit ezconvertmysqltabletype.php --newtype=InnoDB konvertieren
Langsame Seiten[DatabaseSettings] SQLOutput=enabled mit QueryAnalysisOutput=enabled zeigt die Analyse in der Debug-Ausgabe

Checkliste

  • To do: Ein unterstütztes MariaDB-Release mit InnoDB.
  • To do: Eine Datenbank pro Website in utf8mb4, ein Benutzer mit den Rechten oben.
  • To do: mysqli im Web-PHP und im PHP der Kommandozeile.
  • To do: Standardwerte des Panels auf Zeichensatz und Rechte geprüft.
  • To do: Backups mit mariadb-dump --single-transaction geplant und eine Wiederherstellung getestet.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x