7.1

DCL – Data Control Language


Hier die wesentlichen Unterschiede des MySQL GRANT-Befehls zum SQL-Standard:

MySQL verbindet privileges mit eine Kobination vom host name und user name und nicht mit nur eine user name.


Standard SQL hat keine globale oder database-level privileges, ausserdem unterstützt es nicht alle privilege typen, die MySQL unterstützt.

MySQL unterstützt nicht der standard SQL UNDER privilege.

Standard SQL privileges sind strukturiert in einer Hierarchie. Wenn ein user gelöscht wird, werden alle privileges, die dieser user hatte ebenfalls gelöscht. Dies gilt auch, wenn in MySQL , wenn man den Befehl DROP USER benutzt. See Section 13.7.1.3, “DROP USER Syntax”.


In standard SQL, when you drop a table, all privileges for the table are revoked. In standard SQL, when you revoke a privilege, all privileges that were granted based on that privilege are also revoked. In MySQL, privileges can be dropped only with explicit DROP USER or REVOKE statements or by manipulating the MySQL grant tables directly.

In MySQL ist es möglich eine INSERT privilege für einige Spalten einer Tabelle zu haben. Ist dies der Fall, kann man ein INSERT Befehl ausführen, vorausgesetzt dass nur Werte für die Spalten, wofür die Berechtigung existiert, verarbeitet werden. Die restliche Spalten bekommen die definierten default Werte, wenn strict SQL mode nicht verwendet wird. In der strict mode wird die Verarbeitung abgelehnt, wenn für ein Object keine Default-Wert definiert wurde. Standard SQL verlangt INSERT privilege für jede Spalte. [Section 5.1.7, “Server SQL Modes”, discusses strict mode. Section 11.6, “Data Type Default Values”, discusses implicit default values.]