summaryrefslogtreecommitdiffstats
path: root/database/mysql/init.d/mysql
diff options
context:
space:
mode:
Diffstat (limited to 'database/mysql/init.d/mysql')
-rw-r--r--database/mysql/init.d/mysql183
1 files changed, 183 insertions, 0 deletions
diff --git a/database/mysql/init.d/mysql b/database/mysql/init.d/mysql
new file mode 100644
index 0000000000..a04bede25a
--- /dev/null
+++ b/database/mysql/init.d/mysql
@@ -0,0 +1,183 @@
+#!/bin/sh
+# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
+# This file is public domain and comes with NO WARRANTY of any kind
+#
+# If you install MySQL on some other places than /usr, then you
+# have to do one of the following things for this script to work:
+#
+# - Run this script from within the MySQL installation directory
+# - Create a /etc/my.cnf file with the following information:
+# [mysqld]
+# basedir=<path-to-mysql-installation-directory>
+# - Add the above to any other configuration file (for example ~/.my.ini)
+# and copy my_print_defaults to /usr/bin
+# - Add the path to the mysql-installation-directory to the basedir variable
+# below.
+#
+# If you want to affect other MySQL variables, you should make your changes
+# in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.
+#
+# SMGL-script-version=20030723
+# SMGL-START:3 4 5:S90
+# SMGL-STOP:0 1 2 6:K10
+
+PROGRAM=
+RUNLEVEL=3
+NEEDS="+remote_fs"
+
+. /etc/init.d/smgl_init
+
+basedir=
+
+# The following variables are only set for letting mysql.server find things.
+
+# Set some defaults
+datadir=/var/lib/mysql
+pid_file=
+if test -z "$basedir"
+then
+ basedir=/usr
+ bindir=/usr/bin
+else
+ bindir="$basedir/bin"
+fi
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin
+export PATH
+
+if test -z "$pid_file"
+then
+ pid_file=$datadir/`/bin/hostname`.pid
+else
+ case "$pid_file" in
+ /* ) ;;
+ * ) pid_file="$datadir/$pid_file" ;;
+ esac
+fi
+
+mode=$1 # start or stop
+
+parse_arguments() {
+ for arg do
+ case "$arg" in
+ --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ esac
+ done
+}
+
+# Get arguments from the my.cnf file,
+# groups [mysqld] [mysql_server] and [mysql.server]
+if test -x ./bin/my_print_defaults
+then
+ print_defaults="./bin/my_print_defaults"
+elif test -x $bindir/my_print_defaults
+then
+ print_defaults="$bindir/my_print_defaults"
+elif test -x $bindir/mysql_print_defaults
+then
+ print_defaults="$bindir/mysql_print_defaults"
+else
+ # Try to find basedir in /etc/my.cnf
+ conf=/etc/my.cnf
+ print_defaults=
+ if test -r $conf
+ then
+ subpat='^[^=]*basedir[^=]*=\(.*\)$'
+ dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`
+ for d in $dirs
+ do
+ d=`echo $d | sed -e 's/[ ]//g'`
+ if test -x "$d/bin/my_print_defaults"
+ then
+ print_defaults="$d/bin/my_print_defaults"
+ break
+ fi
+ if test -x "$d/bin/mysql_print_defaults"
+ then
+ print_defaults="$d/bin/mysql_print_defaults"
+ break
+ fi
+ done
+ fi
+
+ # Hope it's in the PATH ... but I doubt it
+ test -z "$print_defaults" && print_defaults="my_print_defaults"
+fi
+
+parse_arguments `$print_defaults mysqld mysql_server mysql.server`
+
+# Safeguard (relative paths, core dumps..)
+cd $basedir
+
+case "$mode" in
+ 'start')
+ # Start daemon
+
+ if test -x $bindir/mysqld_safe
+ then
+ # Give extra arguments to mysqld with the my.cnf file. This script may
+ # be overwritten at next upgrade.
+ echo "Starting mysqld_safe..."
+ iter=0
+ ( unset -f echo
+ $bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file 2>&1 > /dev/null ) &
+ while [ ! -e $pid_file ] && [ $((iter++)) -lt 10 ] ; do sleep 1; echo -n . ; done
+ [ $((iter++)) -lt 11 ]
+ evaluate_retval
+ # Make lock for RedHat / SuSE
+ if test -w /var/lock/subsys
+ then
+ touch /var/lock/subsys/mysql
+ fi
+ else
+ echo "Can't execute $bindir/mysqld_safe from dir $basedir"
+ fi
+ evaluate_retval
+ ;;
+
+ 'stop')
+ # Stop daemon. We use a signal here to avoid having to know the
+ # root password.
+ if test -s "$pid_file"
+ then
+ mysqld_pid=`cat $pid_file`
+ echo "Killing mysqld with pid $mysqld_pid"
+ kill $mysqld_pid
+ # mysqld should remove the pid_file when it exits, so wait for it.
+
+ sleep 1
+ while [ -s $pid_file -a "$flags" != aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]
+ do
+ [ -z "$flags" ] && echo -n "Wait for mysqld to exit" || echo -n "."
+ flags=a$flags
+ sleep 1
+ done
+ if [ -s $pid_file ]
+ then echo " gave up waiting!"
+ elif [ -n "$flags" ]
+ then echo " done"
+ fi
+ # delete lock for RedHat / SuSE
+ if test -f /var/lock/subsys/mysql
+ then
+ rm /var/lock/subsys/mysql
+ fi
+ else
+ echo "No mysqld pid file found. Looked for $pid_file."
+ fi
+ evaluate_retval
+ ;;
+ 'restart')
+ echo "Restarting mysql server"
+ $0 stop
+ $0 start
+ evaluate_retval
+ ;;
+ *)
+ # usage
+ echo "usage: $0 start|stop|restart"
+ exit 1
+ ;;
+esac