mirror of
https://git.freebsd.org/ports.git
synced 2025-06-12 00:00:33 -04:00
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
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"
|