Description:
After upgrading to 5.5.29 from 5.5.28 using the pkg, we were unable to start the MySQL server with either /etc/init.d/mysql or mysqld_safe. The MySQL server could not write to /var/lib/mysql for some reason, which made this difficult to troubleshoot. We were only able to start the MySQL server by using the --syslog option. We decided to try the mysqld_safe script from 5.5.28 to see if that made a difference, and MySQL started right up. We did a diff on the mysqld_safe from 5.5.28 and 5.5.29, and noticed several changes between the two dealing with UMASK (not umask), and logging.
# diff mysqld_safe.5.5.29 mysqld_safe
34,55c34
< # MySQL-specific environment variable. First off, it's not really a umask,
< # it's the desired mode. Second, it follows umask(2), not umask(3) in that
< # octal needs to be explicit. Our shell might be a proper sh without printf,
< # multiple-base arithmetic, and binary arithmetic, so this will get ugly.
< # We reject decimal values to keep things at least half-sane.
< umask 007                               # fallback
< UMASK="${UMASK-0640}"
< fmode=`echo "$UMASK" | sed -e 's/[^0246]//g'`
< octalp=`echo "$fmode"|cut -c1`
< fmlen=`echo "$fmode"|wc -c|sed -e 's/ //g'`
< if [ "x$octalp" != "x0" -o "x$UMASK" != "x$fmode" -o "x$fmlen" != "x5" ]
< then
<   fmode=0640
<   echo "UMASK must be a 3-digit mode with an additional leading 0 to indicate octal." >&2
<   echo "The first digit will be corrected to 6, the others may be 0, 2, 4, or 6." >&2
< fi
< fmode=`echo "$fmode"|cut -c3-4`
< fmode="6$fmode"
< if [ "x$UMASK" != "x0$fmode" ]
< then
<   echo "UMASK corrected from $UMASK to 0$fmode ..."
< fi
---
> umask 007
436a416,438
> #
> # Try to find the plugin directory
> #
> 
> # Use user-supplied argument
> if [ -n "${PLUGIN_DIR}" ]; then
>   plugin_dir="${PLUGIN_DIR}"
> else
>   # Try to find plugin dir relative to basedir
>   for dir in lib/mysql/plugin lib/plugin
>   do
>     if [ -d "${MY_BASEDIR_VERSION}/${dir}" ]; then
>       plugin_dir="${MY_BASEDIR_VERSION}/${dir}"
>       break
>     fi
>   done
>   # Give up and use compiled-in default
>   if [ -z "${plugin_dir}" ]; then
>     plugin_dir='/opt/mysql/mysql/lib/plugin'
>   fi
> fi
> plugin_dir="${plugin_dir}${PLUGIN_VARIANT}"
> 
497,521d498
< 
< #
< # Try to find the plugin directory
< #
< 
< # Use user-supplied argument
< if [ -n "${PLUGIN_DIR}" ]; then
<   plugin_dir="${PLUGIN_DIR}"
< else
<   # Try to find plugin dir relative to basedir
<   for dir in lib/mysql/plugin lib/plugin
<   do
<     if [ -d "${MY_BASEDIR_VERSION}/${dir}" ]; then
<       plugin_dir="${MY_BASEDIR_VERSION}/${dir}"
<       break
<     fi
<   done
<   # Give up and use compiled-in default
<   if [ -z "${plugin_dir}" ]; then
<     plugin_dir='/opt/mysql/mysql/lib/plugin'
<   fi
< fi
< plugin_dir="${plugin_dir}${PLUGIN_VARIANT}"
< 
< 
571,576d547
< 
<   if [ ! -e "$err_log" ]; then                  # if error log already exists,
<     touch "$err_log"                            # we just append. otherwise,
<     chmod "$fmode" "$err_log"                   # fix the permissions here!
<   fi
< 
788,793d758
<   if [ $want_syslog -eq 0 -a ! -e "$err_log" ]; then
<     touch "$err_log"                    # hypothetical: log was renamed but not
<     chown $user "$err_log"              # flushed yet. we'd recreate it with
<     chmod "$fmode" "$err_log"           # wrong owner next time we log, so set
<   fi                                    # it up correctly while we can!
< 
How to repeat:
The only known information is the differences in mysqld_safe from 5.5.29 and 5.5.28
  
 
 
 
 
 
 
 
 
Description: After upgrading to 5.5.29 from 5.5.28 using the pkg, we were unable to start the MySQL server with either /etc/init.d/mysql or mysqld_safe. The MySQL server could not write to /var/lib/mysql for some reason, which made this difficult to troubleshoot. We were only able to start the MySQL server by using the --syslog option. We decided to try the mysqld_safe script from 5.5.28 to see if that made a difference, and MySQL started right up. We did a diff on the mysqld_safe from 5.5.28 and 5.5.29, and noticed several changes between the two dealing with UMASK (not umask), and logging. # diff mysqld_safe.5.5.29 mysqld_safe 34,55c34 < # MySQL-specific environment variable. First off, it's not really a umask, < # it's the desired mode. Second, it follows umask(2), not umask(3) in that < # octal needs to be explicit. Our shell might be a proper sh without printf, < # multiple-base arithmetic, and binary arithmetic, so this will get ugly. < # We reject decimal values to keep things at least half-sane. < umask 007 # fallback < UMASK="${UMASK-0640}" < fmode=`echo "$UMASK" | sed -e 's/[^0246]//g'` < octalp=`echo "$fmode"|cut -c1` < fmlen=`echo "$fmode"|wc -c|sed -e 's/ //g'` < if [ "x$octalp" != "x0" -o "x$UMASK" != "x$fmode" -o "x$fmlen" != "x5" ] < then < fmode=0640 < echo "UMASK must be a 3-digit mode with an additional leading 0 to indicate octal." >&2 < echo "The first digit will be corrected to 6, the others may be 0, 2, 4, or 6." >&2 < fi < fmode=`echo "$fmode"|cut -c3-4` < fmode="6$fmode" < if [ "x$UMASK" != "x0$fmode" ] < then < echo "UMASK corrected from $UMASK to 0$fmode ..." < fi --- > umask 007 436a416,438 > # > # Try to find the plugin directory > # > > # Use user-supplied argument > if [ -n "${PLUGIN_DIR}" ]; then > plugin_dir="${PLUGIN_DIR}" > else > # Try to find plugin dir relative to basedir > for dir in lib/mysql/plugin lib/plugin > do > if [ -d "${MY_BASEDIR_VERSION}/${dir}" ]; then > plugin_dir="${MY_BASEDIR_VERSION}/${dir}" > break > fi > done > # Give up and use compiled-in default > if [ -z "${plugin_dir}" ]; then > plugin_dir='/opt/mysql/mysql/lib/plugin' > fi > fi > plugin_dir="${plugin_dir}${PLUGIN_VARIANT}" > 497,521d498 < < # < # Try to find the plugin directory < # < < # Use user-supplied argument < if [ -n "${PLUGIN_DIR}" ]; then < plugin_dir="${PLUGIN_DIR}" < else < # Try to find plugin dir relative to basedir < for dir in lib/mysql/plugin lib/plugin < do < if [ -d "${MY_BASEDIR_VERSION}/${dir}" ]; then < plugin_dir="${MY_BASEDIR_VERSION}/${dir}" < break < fi < done < # Give up and use compiled-in default < if [ -z "${plugin_dir}" ]; then < plugin_dir='/opt/mysql/mysql/lib/plugin' < fi < fi < plugin_dir="${plugin_dir}${PLUGIN_VARIANT}" < < 571,576d547 < < if [ ! -e "$err_log" ]; then # if error log already exists, < touch "$err_log" # we just append. otherwise, < chmod "$fmode" "$err_log" # fix the permissions here! < fi < 788,793d758 < if [ $want_syslog -eq 0 -a ! -e "$err_log" ]; then < touch "$err_log" # hypothetical: log was renamed but not < chown $user "$err_log" # flushed yet. we'd recreate it with < chmod "$fmode" "$err_log" # wrong owner next time we log, so set < fi # it up correctly while we can! < How to repeat: The only known information is the differences in mysqld_safe from 5.5.29 and 5.5.28