MySQL toma las siguientes medidas para evitar uso inadecuado de funciones definidas por el usuario.
          Debe tener el privilegio INSERT para poder
          usar CREATE FUNCTION y el privilegio
          DELETE para poder usar DROP
          FUNCTION. Esto es necesario ya que estos comandos
          añaden y borran registros de la tabla
          mysql.func .
        
          UDFs debe tener como mínimo un símbolo definido además del
          símbolo xxx que corresponde a la función
          principal xxx() . Estos símbolos
          auxiliares se corresponden con las funciones
          xxx_init(),
          xxx_deinit(),
          xxx_reset(),
          xxx_clear(), y xxx_add()
          . Desde MySQL 4.0.24, 4.1.10a, y 5.0.3,
          mysqld soporta una opción
          --allow-suspicious-udfs que controla si UDFs
          que tienen un solo símbolo xxx pueden
          cargarse. Por defecto, la opción está desactivada, para
          evitar intentos de cargar funciones de ficheros de objetos
          compartidos otros aparte de los que contienen UDFs legítimos.
          Si tiene UDFs antiguos que contienen sólo el símbolo
          xxx y no pueden recompilarse para incluir
          un símbolo auxiliar, puede ser necesario especificar la
          opción --allow-suspicious-udfs . De otro
          modo, debe evitar activar esta capacidad.
        
          Los ficheros objeto UDF no pueden guardarse en un directorio
          arbitrario. Deben estar localizado en un directorio de sistema
          en el que busque el lincador dinámico. Para forzar esta
          restricción y evitar intentos de especificar rutas fuera de
          los directorios buscados por el lincador dinámico, MySQL
          chequea el fichero de objeto compartido especificado en
          comandos CREATE FUNCTION para delimitadores
          de rutas. Desde MySQL 4.0.24, 4.1.10a, y 5.0.3, MySQL también
          chequea los delimitadores de rutas en nombres de ficheros
          almacenados en la tabla mysql.func cuando
          carga funciones. Esto evita intentos de especificar rutas
          ilegítimas manipuladas en la tabla
          mysql.func . Para información acerca de
          UDFs y lincador en tiempo de ejecución, consulte
          Sección 27.2.3.5, “Compilar e instalar funciones definidas por el usuario”.
        
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

