khanat-server-docker-NeL/server/debian/common/servercontainer_init_mysql.sh

117 lines
3.8 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
#
# Prepare/Configure MySQL
# Copyright (C) 2017 AleaJactaEst
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
usage()
{
cat << EOF
usage:$0 [options]
prepare mysql (create directory, update configuration)
options:
-h, --help : Show this help
-d, --debug : Show debug message
EOF
}
update_mysql_config()
{
if [ -z "$1" ]
then
msg_error "missing configuration file"
return
fi
if [ -f "$1" ]
then
msg_debug "update configuration $1"
sed -i -r 's/^user[[:space:]]+=[[:space:]]+(.*)/user = gameserver/g' $1 || exit 2
sed -i -r 's/^datadir[[:space:]]+=[[:space:]]+(.*)/datadir = \/home\/gameserver\/database/g' $1 || exit 2
sed -i -r 's/^log_error[[:space:]]+=[[:space:]]+(.*)/log_error = \/home\/gameserver\/log\/mysql\/error\.log/g' $1 || exit 2
sed -i -r 's/^(#*)general_log_file[[:space:]]+=(.*)/general_log_file = \/home\/gameserver\/log\/mysql\/mysql\.log/g' $1 || exit 2
sed -i -r 's/^(#*)general_log[[:space:]]+=(.*)/general_log = 1/g' $1 || exit 2
sed -i -r 's/^(#*)slow_query_log_file[[:space:]]+=(.*)/slow_query_log_file = \/home\/gameserver\/log\/mysql\/mysql-slow\.log/g' $1 || exit 2
sed -i -r 's/^(#*)slow_query_log[[:space:]]+=(.*)/slow_query_log = 1/g' $1 || exit 2
sed -i -r 's/^(#*)long_query_time[[:space:]]+=(.*)/long_query_time = 2/g' $1 || exit 2
sed -i -r 's/^(#*)log_queries_not_using_indexes(.*)/log_queries_not_using_indexes/g' $1 || exit 2
else
msg_debug "nothing for $1"
fi
}
#####################
# MAIN
#####################
source /opt/servercontainer_function.sh
msg_info "$(basename $0) => START"
while test $# -gt 0
do
case "$1" in
-h|--help)
usage
exit 1
;;
-d|--debug)
set_debug 1
shift
;;
*)
msg_error "options '$1' not recognize"
usage
exit 1
;;
esac
done
####################################
# Load Environment
####################################
msg_debug "Load environment"
if [[ ! -f /opt/khanat_config.sh ]]
then
echo "ERROR - missing /opt/khanat_config.sh"
exit 2
fi
source /opt/khanat_config.sh
msg_debug "Create database for account gameserver"
# Create database on gameserver account (and change directory database)
if [ $(get_debian_version) -lt 9 ]
then
2018-07-26 07:35:31 +00:00
msg_info "[$(basename $0):$LINENO] update mysql configuration /etc/mysql/my.cnf"
# old configuration mysql (on debian 8-)
update_mysql_config '/etc/mysql/my.cnf'
else
2018-07-26 07:35:31 +00:00
msg_info "[$(basename $0):$LINENO] update mysql configuration /etc/mysql/mariadb.conf.d/50-server.cnf"
# For mariadb (on debian 9)
update_mysql_config '/etc/mysql/mariadb.conf.d/50-server.cnf'
fi
mkdir -p /home/gameserver/database/ || exit 2
chown gameserver:$(id -g -n gameserver) /home/gameserver/database/ || exit 2
mkdir -p /home/gameserver/log/mysql || exit 2
chown -R gameserver:$(id -g -n gameserver) /home/gameserver/log || exit 2
mkdir -p /var/run/mysqld || exit 2
chown gameserver:$(id -g -n gameserver) /var/run/mysqld/ || exit 2
####################################
# End
####################################
msg_info "$(basename $0) => END"