2017-10-09 20:10:36 +00:00
#!/bin/bash
#
# 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 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
declare DEBUG = 0
usage( )
{
cat << EOF
usage:$0 [ options]
prepare mysql ( create directory, update configuration)
options:
-h, --help : Show this help
-d, --debug : Show debug message
EOF
}
function msg_debug( )
{
if [ [ $DEBUG -ne 0 ] ]
then
echo " $( date "+%Y/%m/%d %H:%M:%S" ) DEBUG - $* "
fi
}
function msg_info( )
{
echo " $( date "+%Y/%m/%d %H:%M:%S" ) INFO - $* "
}
function msg_error( )
{
echo " $( date "+%Y/%m/%d %H:%M:%S" ) ERROR - $* " >& 2
}
#####################
# MAIN
#####################
source /opt/ext/servercontainer_function.sh
msg_info " $( basename $0 ) => START "
while test $# -gt 0
do
case " $1 " in
-h| --help)
usage
exit 1
; ;
-d| --debug)
DEBUG = 1
shift
; ;
*)
msg_error " options ' $1 ' not recoginze "
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
####################################
# Configure Log MySQL
####################################
msg_debug "Configure Log"
mkdir -p /home/gameserver/log/mysql || exit 2
chown -R gameserver:$( id -g -n gameserver) /home/gameserver/log || exit 2
####################################
# Install Database
####################################
msg_debug "Install Database"
/usr/bin/mysql_install_db --user= gameserver --skip-name-resolve || exit 2
####################################
# Start Database
####################################
# Start the MySQL daemon in the background.
msg_debug "Start database"
/usr/sbin/mysqld &
mysql_pid = $!
# Wait mysql start
2017-10-09 21:29:50 +00:00
msg_info "Check database is started"
sleep 1
2017-10-09 20:10:36 +00:00
until /usr/bin/mysqladmin ping >/dev/null 2>& 1
do
echo -n "."
sleep 1
done
echo ""
2017-10-09 21:29:50 +00:00
sleep 1
2017-10-09 20:10:36 +00:00
####################################
# Update root password (mysql)
####################################
# Initialize password root (to empty)
msg_debug "configure password root for database"
/usr/bin/mysqladmin -u root password '' || exit 2
mysql -u root -e "GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '" $( awk '{if($1 == "password"){print $3;exit 0}}' /etc/mysql/debian.cnf) "' WITH GRANT OPTION; FLUSH PRIVILEGES;" || exit 2
####################################
# Stop Database
####################################
# Stop MySQL
msg_debug "Stop database"
/usr/bin/mysqladmin shutdown
# Wait MySQL stop
wait $mysql_pid
####################################
# End
####################################
msg_info " $( basename $0 ) => END "