Commit 3e7a5763 authored by unknown's avatar unknown
Browse files

Fix handling of datadir by mysqld_safe to support specifying a

different DATADIR via the command line or during ./configure and
still starting up mysqld_safe via a relative path. (Bug #7249)


scripts/mysqld_safe.sh:
  Decouple figuring out which BASEDIR and DATADIR to use so that
  the only DATADIR we'll try to use without first verifying that
  it exists is the compiled-in default.
parent a7e66efc
Loading
Loading
Loading
Loading
+29 −11
Original line number Diff line number Diff line
@@ -84,31 +84,49 @@ parse_arguments() {
}


#
# First, try to find BASEDIR and ledir (where mysqld is)
# 

MY_PWD=`pwd`
# Check if we are starting this relative (for the binary release)
if test -f ./share/mysql/english/errmsg.sys -a \
 -x ./bin/mysqld
# Check for the directories we would expect from a binary release install
if test -f ./share/mysql/english/errmsg.sys -a -x ./bin/mysqld
then
  MY_BASEDIR_VERSION=$MY_PWD		# Where bin, share and data are
  ledir=$MY_BASEDIR_VERSION/bin		# Where mysqld is
  DATADIR=$MY_BASEDIR_VERSION/data
  if test -z "$defaults"
  then
    defaults="--defaults-extra-file=$MY_BASEDIR_VERSION/data/my.cnf"
  fi
# Check if this is a 'moved install directory'
# Check for the directories we would expect from a source install
elif test -f ./share/mysql/english/errmsg.sys -a \
 -x ./libexec/mysqld
then
  MY_BASEDIR_VERSION=$MY_PWD		# Where libexec, share and var are
  ledir=$MY_BASEDIR_VERSION/libexec	# Where mysqld is
  DATADIR=$MY_BASEDIR_VERSION/var
# Since we didn't find anything, used the compiled-in defaults
else
  MY_BASEDIR_VERSION=@prefix@
  DATADIR=@localstatedir@
  ledir=@libexecdir@
fi

#
# Second, try to find the data directory
#

# Try where the binary installs put it
if test -d $MY_BASEDIR_VERSION/data/mysql
then
  DATADIR=$MY_BASEDIR_VERSION/data
  if test -z "$defaults"
  then
    defaults="--defaults-extra-file=$DATADIR/my.cnf"
  fi
# Next try where the source installs put it
elif test -d $MY_BASEDIR_VERSION/var/mysql
then
  DATADIR=$MY_BASEDIR_VERSION/var
# Or just give up and use our compiled-in default
else
  DATADIR=@localstatedir@
fi

user=@MYSQLD_USER@
niceness=0