ports/databases/mariadb101-server/files/mysql-server.in
Bernard Spil eaba6fd276 [NEW PORTS] databases/mariadb101-{server,client}: 10.1.11
MariaDB is one of the most popular database servers in the world. It's made
by the original developers of MySQL and guaranteed to stay open source.
Notable users include Wikipedia, Facebook and Google.

MariaDB turns data into structured information in a wide array of
applications, ranging from banking to websites. It is an enhanced, drop-in
replacement for MySQL. MariaDB is used because it is fast, scalable and
robust, with a rich ecosystem of storage engines, plugins and many other
tools make it very versatile for a wide variety of use cases.

MariaDB is developed as open source software and as a relational database
it provides an SQL interface for accessing data. This latest versions of
MariaDB also include GIS and JSON features.

WWW: http://mariadb.org/

Reviewed by:	koobs (mentor), feld (mentor)
Approved by:	koobs (mentor), feld (mentor)
Differential Revision:	D3953
2016-02-13 19:02:11 +00:00

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"