#!/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 . 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 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 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"