mirror of
https://git.freebsd.org/ports.git
synced 2025-05-15 08:41:51 -04:00
PR: 193539 Submitted by: spil.oss (gmail) MariaDB is a database server that offers drop-in replacement functionality for MySQL. MariaDB is built by some of the original authors of MySQL, with assistance from the broader community of Free and open source software developers. In addition to the core functionality of MySQL, MariaDB offers a rich set of feature enhancements including alternate storage engines, server optimizations, and patches.
139 lines
4 KiB
Bash
139 lines
4 KiB
Bash
#!/bin/sh
|
|
|
|
# $FreeBSD: head/databases/mariadb55-server/files/mysql-server.in 361647 2014-07-12 22:42:33Z rakuco $
|
|
#
|
|
# PROVIDE: mysql
|
|
# REQUIRE: LOGIN
|
|
# KEYWORD: shutdown
|
|
#
|
|
# Add the following line to /etc/rc.conf to enable mysql:
|
|
# mysql_(instance_)?enable (bool): Set to "NO" by default.
|
|
# Set it to "YES" to enable MySQL.
|
|
# mysql_(instance_)?limits (bool): Set to "NO" by default.
|
|
# Set it to yes to run `limits -e -U mysql`
|
|
# just before mysql starts.
|
|
# mysql_(instance_)?dbdir (str): Default to "/var/db/mysql"
|
|
# Base database directory.
|
|
# mysql_(instance_)?args (str): Custom additional arguments to be passed
|
|
# to mysqld_safe (default empty).
|
|
# mysql_(instance_)?pidfile (str): Custum PID file path and name.
|
|
# Default to "${mysql_dbdir}/${hostname}.pid".
|
|
# mysql_(instance_)?user (str): User to run mysqld as
|
|
# Default to "mysql" created by the port
|
|
# mysql_(instance_)?optfile (str): Server-specific option file.
|
|
# Default to "${mysql_dbdir}/my.cnf".
|
|
# mysql_instances (str): Set to "" by default.
|
|
# If defined, list of instances to enable
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="mysql"
|
|
rcvar=mysql_enable
|
|
|
|
load_rc_config $name
|
|
|
|
: ${mysql_enable="NO"}
|
|
: ${mysql_limits="NO"}
|
|
: ${mysql_user="mysql"}
|
|
: ${mysql_limits_args="-e -U $mysql_user"}
|
|
: ${mysql_dbdir="/var/db/mysql"}
|
|
: ${mysql_optfile="${mysql_dbdir}/my.cnf"}
|
|
|
|
command="/usr/sbin/daemon"
|
|
procname="%%PREFIX%%/libexec/mysqld"
|
|
start_precmd="${name}_prestart"
|
|
start_postcmd="${name}_poststart"
|
|
|
|
if [ -n "$2" ]; then
|
|
instance="$2"
|
|
load_rc_config ${name}_${instance}
|
|
case "$mysql_instances" in
|
|
"$2 "*|*" $2 "*|*" $2"|"$2")
|
|
eval mysql_args="\${mysql_${instance}_args:-\"${mysql_args}\"}"
|
|
eval mysql_dbdir="\${mysql_${instance}_dbdir:-\"/var/db/mysql_${instance}\"}"
|
|
eval mysql_limits="\${mysql_${instance}_limits:-\"${mysql_limits}\"}"
|
|
eval mysql_user="\${mysql_${instance}_user:-\"${mysql_user}\"}"
|
|
eval mysql_limits_args="\${mysql_${instance}_limits_args:-\"-e -U $mysql_user\"}"
|
|
eval mysql_optfile="\${mysql_${instance}_optfile:-\"${mysql_dbdir}/my.cnf\"}"
|
|
eval mysql_pidfile="\${mysql_${instance}_pidfile:-\"${mysql_dbdir}/`/bin/hostname`.pid\"}"
|
|
;;
|
|
*)
|
|
err 1 "$2 not found in mysql_instances" ;;
|
|
esac
|
|
else
|
|
if [ -n "${mysql_instances}" -a -n "$1" ]; then
|
|
for instance in ${mysql_instances}; do
|
|
eval _enable="\${mysql_${instance}_enable}"
|
|
case "${_enable:-${mysql_enable}}" in
|
|
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
|
|
continue
|
|
;;
|
|
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
|
|
;;
|
|
*)
|
|
if [ -z "$_enable" ]; then
|
|
_var=mysql_enable
|
|
else
|
|
_var=mysql_${instance}_enable
|
|
fi
|
|
warn "Bad value" \
|
|
"'${_enable:-${mysql_enable}}'" \
|
|
"for ${_var}. " \
|
|
"Instance ${instance} skipped."
|
|
continue
|
|
;;
|
|
esac
|
|
echo "===> mysql instance: ${instance}"
|
|
if %%PREFIX%%/etc/rc.d/mysql-server $1 ${instance}; then
|
|
success="${instance} ${success}"
|
|
else
|
|
failed="${instance} (${retcode}) ${failed}"
|
|
fi
|
|
done
|
|
exit 0
|
|
else
|
|
mysql_pidfile=${mysql_pidfile:-"${mysql_dbdir}/`/bin/hostname`.pid"}
|
|
fi
|
|
fi
|
|
|
|
pidfile=$mysql_pidfile
|
|
mysql_install_db="%%PREFIX%%/bin/mysql_install_db"
|
|
mysql_install_db_args="--basedir=%%PREFIX%% --datadir=${mysql_dbdir} --force"
|
|
command_args="-c -f %%PREFIX%%/bin/mysqld_safe --defaults-extra-file=${mysql_optfile} --user=${mysql_user} --datadir=${mysql_dbdir} --pid-file=${pidfile} ${mysql_args}"
|
|
|
|
mysql_create_auth_tables()
|
|
{
|
|
eval $mysql_install_db $mysql_install_db_args
|
|
[ $? -eq 0 ] && chown -R ${mysql_user}:$(id -gn $mysql_user) ${mysql_dbdir}
|
|
}
|
|
|
|
mysql_prestart()
|
|
{
|
|
local dir
|
|
for dir in /etc /etc/mysql; do
|
|
if [ -f "${dir}/my.cnf" ]; then
|
|
echo "Please move existing my.cnf file from ${dir} to %%PREFIX%%${dir}"
|
|
return 1
|
|
fi
|
|
done
|
|
if [ ! -d "${mysql_dbdir}/mysql/." ]; then
|
|
mysql_create_auth_tables || return 1
|
|
fi
|
|
if checkyesno mysql_limits; then
|
|
eval `/usr/bin/limits ${mysql_limits_args:-"-e -U $mysql_user"}` 2>/dev/null
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
mysql_poststart()
|
|
{
|
|
local timeout=15
|
|
while [ ! -f "${pidfile}" -a ${timeout} -gt 0 ]; do
|
|
timeout=$(( timeout - 1 ))
|
|
sleep 1
|
|
done
|
|
return 0
|
|
}
|
|
|
|
run_rc_command "$1"
|