MySQL verhindert durch folgende Maßnahmen den Missbrauch benutzerdefinierter Funktionen:
Sie benötigen das INSERT
-Recht, um
CREATE FUNCTION
, und das
DELETE
-Recht, um DROP
FUNCTION
sagen zu dürfen. Die Berechtigungen sind
erforderlich, weil diese Anweisungen Zeilen der
mysql.func
-Tabelle anlegen und löschen.
Für UDFs sollte zusätzlich zu dem
xxx
-Symbol für die Hauptfunktion
xxx()
mindestens ein weiteres Symbol
definiert sein. Diese Hilfssymbole stehen für die Funktionen
xxx_init()
,
xxx_deinit()
,
xxx_reset()
, xxx_clear()
und xxx_add()
. mysqld
unterstützt überdies eine
--allow-suspicious-udfs
-Option, die steuert,
ob UDFs, die nur das eine xxx
-Symbol haben,
überhaupt geladen werden dürfen. Nach Voreinstellung ist die
Option ausgeschaltet, um zu verhindern, dass aus Shared
Object-Dateien Funktionen geladen werden, die keine gültigen
UDFs sind. Wenn Sie noch mit älteren UDFs arbeiten, die
lediglich das xxx
-Symbol haben und nicht
mit einem Hilfssymbol rekompiliert werden können, kann es
notwendig werden, die Option
--allow-suspicious-udfs
anzugeben. Ansonsten
sollten Sie diese Option möglichst nicht einschalten.
Objektdateien für UDFs dürfen nicht in jedes beliebige
Verzeichnis gelegt werden, sondern nur in das
Plug-In-Verzeichnis des Servers, das Sie am Wert der
Systemvariablen plugin_dir
erkennen
können. (Hinweis: Dies ist
neu in MySQL 5.1. In früheren Versionen von MySQL konnte das
Shared Object in jedem Verzeichnis platziert werden, das der
dynamische Linker des Systems untersuchte.)
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.