| Bug #71611 | /etc/init.d/mysql needs to be modified to support chroot= in /etc/my.cnf | ||
|---|---|---|---|
| Submitted: | 6 Feb 2014 18:47 | Modified: | 6 Feb 2014 19:57 |
| Reporter: | Pura Vida | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: Installing | Severity: | S3 (Non-critical) |
| Version: | 5.6-16 | OS: | Linux |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | chroot, Contribution, MySQL, script, start, stop | ||
[6 Feb 2014 18:47]
Pura Vida
[6 Feb 2014 19:07]
Pura Vida
# diff -u mysql mysql_chroot
--- mysql 2014-01-14 10:58:00.000000000 -0500
+++ mysql_chroot 2014-02-06 13:04:51.822824055 -0500
@@ -61,6 +61,7 @@
# Set some defaults
mysqld_pid_file_path=
+chroot=
if test -z "$basedir"
then
basedir=/usr
@@ -137,6 +138,7 @@
;;
--pid-file=*) mysqld_pid_file_path=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--service-startup-timeout=*) service_startup_timeout=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --chroot=*) chroot=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
esac
done
}
@@ -258,7 +260,7 @@
#
# Set pid file if not given
#
-if test -z "$mysqld_pid_file_path"
+if test -z "$chroot$mysqld_pid_file_path"
then
mysqld_pid_file_path=$datadir/`hostname`.pid
else
@@ -281,7 +283,7 @@
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
- wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
+ wait_for_pid created "$!" "$chroot$mysqld_pid_file_path"; return_value=$?
# Make lock for RedHat / SuSE
if test -w "$lockdir"
@@ -299,19 +301,19 @@
# Stop daemon. We use a signal here to avoid having to know the
# root password.
- if test -s "$mysqld_pid_file_path"
+ if test -s "$chroot$mysqld_pid_file_path"
then
- mysqld_pid=`cat "$mysqld_pid_file_path"`
+ mysqld_pid=`cat "$chroot$mysqld_pid_file_path"`
if (kill -0 $mysqld_pid 2>/dev/null)
then
echo $echo_n "Shutting down MySQL"
kill $mysqld_pid
# mysqld should remove the pid file when it exits, so wait for it.
- wait_for_pid removed "$mysqld_pid" "$mysqld_pid_file_path"; return_value=$?
+ wait_for_pid removed "$mysqld_pid" "$chroot$mysqld_pid_file_path"; return_value=$?
else
log_failure_msg "MySQL server process #$mysqld_pid is not running!"
- rm "$mysqld_pid_file_path"
+ rm "$chroot$mysqld_pid_file_path"
fi
# Delete lock for RedHat / SuSE
@@ -337,10 +339,10 @@
;;
'reload'|'force-reload')
- if test -s "$mysqld_pid_file_path" ; then
- read mysqld_pid < "$mysqld_pid_file_path"
+ if test -s "$chroot$mysqld_pid_file_path" ; then
+ read mysqld_pid < "$chroot$mysqld_pid_file_path"
kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL"
- touch "$mysqld_pid_file_path"
+ touch "$chroot$mysqld_pid_file_path"
else
log_failure_msg "MySQL PID file could not be found!"
exit 1
@@ -348,8 +350,8 @@
;;
'status')
# First, check to see if pid file exists
- if test -s "$mysqld_pid_file_path" ; then
- read mysqld_pid < "$mysqld_pid_file_path"
+ if test -s "$chroot$mysqld_pid_file_path" ; then
+ read mysqld_pid < "$chroot$mysqld_pid_file_path"
if kill -0 $mysqld_pid 2>/dev/null ; then
log_success_msg "MySQL running ($mysqld_pid)"
exit 0
[6 Feb 2014 19:11]
Pura Vida
The relevant parameters. [mysqld] chroot = /var/log/mysql datadir = /var/lib/mysql/ log-bin = /var/lib/mysql/mysqld-bin pid-file = /var/run/mysqld/mysqld.pid slow-query-log-file = /var/lib/mysql/mysql-slow.log socket = /var/lib/mysql/mysql.sock log-error = /var/log/mysqld.log [client] socket = /var/log/mysql/var/lib/mysql/mysql.sock
[6 Feb 2014 19:13]
Pura Vida
The relevant parameters. [mysqld] chroot = /chroot datadir = /var/lib/mysql/ log-bin = /var/lib/mysql/mysqld-bin pid-file = /var/run/mysqld/mysqld.pid slow-query-log-file = /var/lib/mysql/mysql-slow.log socket = /var/lib/mysql/mysql.sock log-error = /var/log/mysqld.log [client] socket = /chroot/var/lib/mysql/mysql.sock
[6 Feb 2014 19:57]
Sveta Smirnova
Thank you for the report. Verified as described: pid file created, but mysql.server script expects it in another place.
[6 Feb 2014 19:59]
Sveta Smirnova
Server actually starts, simply mysql.server can not finish execution.
[6 Feb 2014 20:00]
Sveta Smirnova
In order for us to accept your contribution please sign Oracle Contributor Agreement (OCA) as described in "Contributions" tab.
