Eine Möglichkeit, die Nutzung der MySQL-Serverressourcen
        einzuschränken, besteht in der Einstellung der Systemvariablen
        max_user_connections auf einen Wert ungleich
        Null. Allerdings arbeitet diese Methode streng global und
        ermöglicht keine Verwaltung einzelner Konten. Außerdem wird
        hierbei nur die Anzahl der Verbindungen beschränkt, die
        gleichzeitig über ein einzelnes Konto verwendet werden, nicht
        jedoch, was ein Client tun kann, sobald die Verbindung
        hergestellt ist. Diese beiden Steuerungsformen sind für viele
        MySQL-Administratoren interessant – insbesondere für solche,
        die für Internetprovider tätig sind.
      
In MySQL 5.1 können Sie die folgenden Serverressourcen für einzelne Konten einschränken:
Anzahl der Abfragen, die ein Konto pro Stunde absetzen kann
Anzahl der Updates, die ein Konto pro Stunde durchführen kann
Häufigkeit, mit der ein Konto pro Stunde Verbindungen herstellen kann
Jede Anweisung, die ein Client absetzen kann, erhöht den Zähler für das Abfragelimit. Der Updatezähler hingegen wird nur bei Anweisungen hochgezählt, die Datenbanken oder Tabellen ändern.
Es ist auch möglich, die Anzahl gleichzeitiger Verbindungen zum Server pro Konto zu beschränken.
        In diesem Kontext ist unter einem Konto ein Datensatz in der
        Tabelle user zu verstehen. Jedes Konto wird
        durch die User- und
        Host-Spaltenwerte eindeutig bezeichnet.
      
        Voraussetzung für die Verwendung dieser Funktion ist, dass die
        Tabelle user in der
        mysql-Datenbank die ressourcenspezifischen
        Spalten enthält. Ressourcenbeschränkungen sind in den Spalten
        max_questions,
        max_updates,
        max_connections und
        max_user_connections abgelegt. Wenn Ihre
        Tabelle user diese Spalten nicht aufweist,
        muss sie aktualisiert werden. Siehe auch
        Abschnitt 5.6, „mysql_fix_privilege_tables — Upgrade von MySQL-Systemtabellen“.
      
        Um Ressourcenbeschränkungen mit einer
        GRANT-Anweisung einzustellen, verwenden Sie
        eine WITH-Klausel, die alle zu
        beschränkenden Ressourcen und einen stundenbezogenen Zähler
        benennt, der den jeweiligen Maximalwert angibt. Um also etwa ein
        neues Konto zu erstellen, das auf die Datenbank
        customer in eingeschränkter Weise zugreifen
        kann, setzen Sie folgende Anweisung ab:
      
mysql>GRANT ALL ON customer.* TO 'francis'@'localhost'->IDENTIFIED BY 'frank'->WITH MAX_QUERIES_PER_HOUR 20->MAX_UPDATES_PER_HOUR 10->MAX_CONNECTIONS_PER_HOUR 5->MAX_USER_CONNECTIONS 2;
        Nicht alle Beschränkungstypen müssen in der
        WITH-Klausel aufgeführt sein. Zudem ist die
        Reihenfolge der aufgeführten Typen beliebig. Der Wert des
        Stundenlimits sollte eine ganze Zahl sein, die den Wert pro
        Stunde angibt. Wird die GRANT-Anweisung ohne
        WITH-Klausel abgesetzt, dann werden alle
        Beschränkungen auf den Standardwert Null gesetzt (d. h. es
        gibt keine Beschränkungen). Bei
        MAX_USER_CONNECTIONS ist der Höchstwert eine
        ganze Zahl, die die maximale Anzahl der Verbindungen angibt, die
        das Konto gleichzeitig halten kann. Wenn der Wert auf die
        Vorgabe Null gesetzt ist, bestimmt die Systemvariable
        max_user_connections die maximale Anzahl
        gleichzeitiger Verbindungen für das Konto.
      
        Um die Beschränkungen für ein vorhandenes Konto einzustellen
        oder zu ändern, verwenden Sie eine GRANT
        USAGE-Anweisung auf der globalen Ebene (ON
        *.*). Die folgende Anweisung setzt das Abfragelimit
        für francis auf 100:
      
mysql>GRANT USAGE ON *.* TO 'francis'@'localhost'->WITH MAX_QUERIES_PER_HOUR 100;
Diese Anweisung ändert nicht die vorhandenen Berechtigungen des Kontos, sondern nur die vorhandenen Maximalwerte.
        Um eine vorhandene Beschränkung zu entfernen, setzen Sie den
        Wert auf Null. Um etwa die Beschränkung der Häufigkeit
        aufzuheben, mit der francis eine Verbindung
        herstellen kann, verwenden Sie folgende Anweisung:
      
mysql>GRANT USAGE ON *.* TO 'francis'@'localhost'->WITH MAX_CONNECTIONS_PER_HOUR 0;
Eine Zählung der Ressourcennutzung findet statt, wenn für ein Konto ein Wert ungleich Null für die Beschränkung einer bestimmten Ressource konfiguriert ist.
Wenn der Server läuft, ermittelt er, wie häufig jedes Konto welche Ressourcen verwendet. Wenn ein Konto die höchste Anzahl zulässiger Verbindungen innerhalb einer Stunde erreicht, werden weitere Verbindungsanfragen des Kontos abgewiesen, bis die Stunde verstrichen ist. Ähnlich werden weitere Abfragen oder Updates abgewiesen, wenn für diese der jeweilige Maximalwert durch ein Konto erreicht wird. In all diesen Fällen wird eine entsprechende Fehlermeldung angezeigt.
Die Zählung der Ressourcennutzungen erfolgt auf Konten- und nicht auf Clientbasis. Wenn Ihr Konto beispielsweise eine Beschränkung von 50 Abfragen pro Stunde hat, dann können Sie diese nicht verdoppeln, indem Sie gleichzeitig zwei Clientverbindungen zum Server herstellen. Die Abfragen, die über die beiden Verbindungen abgesetzt werden, werden zusammengezählt.
Die aktuellen Ressourcenzähler können global oder auch für einzelne Konten zurückgesetzt werden:
            Um die aktuellen Zähler für alle Konten zu nullen, setzen
            Sie eine FLUSH USER_RESOURCES-Anweisung
            ab. Die Werte können auch durch Neuladen der Grant-Tabellen
            (etwa mit einer FLUSH
            PRIVILEGES-Anweisung oder dem Befehl
            mysqladmin reload) zurückgesetzt werden.
          
            Zähler eines bestimmten Kontos können auf Null gesetzt
            werden, indem eine beliebige Beschränkung erneut definiert
            wird. Verwenden Sie zu diesem Zweck wie oben beschrieben die
            Anweisung GRANT USAGE und geben Sie den
            Wert, der für das Konto bereits festgelegt ist, erneut an.
          
        Das Zurücksetzen der Zähler wirkt sich nicht auf die
        Beschränkung MAX_USER_CONNECTIONS aus.
      
Beim Serverstart beginnen alle Zähler bei Null zu zählen, d. h. vorhandene Werte lassen sich nicht über einen Neustart hinweg übertragen.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

