Dezember 2011 Archive

Ich nutze für einige Installationen bestimmte Pfade für das plugin-dir.
Bei dem Upgrade auf MySQL 5.5 wurde die Konfiguration nicht mehr gezogen.
Beim direkten Starten vom mysqld $CONF war wieder alles in Ordnung.
Es zeigte sich, dass der Fehler im mysqld_safe liegt.
mysqld_safe meint seit 5.5.? die Option plugin-dir parsen zu müssen.
Hierfür wurde die Funktion parse_arguments() erweitert.
#v+
177       --plugin-dir=*) PLUGIN_DIR="$val" ;;
#v-

Folgender Code greift auf die Variable zu (wenn die denn gesetzt wurde):
421 if [ -n "${PLUGIN_DIR}" ]; then
422   plugin_dir="${PLUGIN_DIR}"
423 else
424   # Try to find plugin dir relative to basedir
425   for dir in lib/mysql/plugin lib/plugin
426   do
427     if [ -d "${MY_BASEDIR_VERSION}/${dir}" ]; then
428       plugin_dir="${MY_BASEDIR_VERSION}/${dir}"
429       break
430     fi
431   done
432   # Give up and use compiled-in default
433   if [ -z "${plugin_dir}" ]; then
434     plugin_dir='/usr/local/mysql/lib/plugin'
435   fi
436 fi


Dummerweise wird die Funktion zum Parsen der Config erst später aufgerufen :/
488 parse_arguments `$print_defaults $defaults --loose-verbose mysqld server`
494 parse_arguments `$print_defaults $defaults --loose-verbose mysqld_safe safe_mysqld`
495 parse_arguments PICK-ARGS-FROM-ARGV "$@"

Ergo ist es egal was konfiguriert wurde. Da zum Zeitpunkt des ersten Code-Schnipsels $PLUGIN_DIR immer leer ist.

Bugreport: http://bugs.mysql.com/bug.php?id=63862

Für jene, welche einen schnellen Würgaround brauchen, einfach
 "--datadir=$DATADIR" "--plugin-dir=$plugin_dir" "$USER_OPTION"
durch
"--datadir=$DATADIR"  "$USER_OPTION"
ersetzen.

Viel Spaß
Erkan