summaryrefslogtreecommitdiffstats
path: root/Services/mariadb/run.sh
diff options
context:
space:
mode:
Diffstat (limited to 'Services/mariadb/run.sh')
-rw-r--r--Services/mariadb/run.sh139
1 files changed, 137 insertions, 2 deletions
diff --git a/Services/mariadb/run.sh b/Services/mariadb/run.sh
index cd22b99..a2e4dfb 100644
--- a/Services/mariadb/run.sh
+++ b/Services/mariadb/run.sh
@@ -27,7 +27,7 @@ function display_container_mariadb_header {
echo "+====================================================="
echo "| Container : $HOSTNAME"
echo "| OS : $(</etc/redhat-release)"
- echo "| Engine : " mysql -V
+ echo "| Engine : $(mysql -V)"
if [ -v CONTAINER_TYPE ]; then
echo "| Type : $CONTAINER_TYPE"
fi
@@ -57,8 +57,138 @@ function display_container_mariadb_header {
# and start generating host keys
function begin_config {
echo "=> BEGIN MARIADB CONFIGURATION"
+ if [[ ! -d $DATA_PATH ]]; then
+ echo "log directory $DATA_PATH not found"
+ mkdir -p $DATA_PATH; chmod 0774 $DATA_PATH
+ echo "data directory $DATA_PATH CREATED"
+ else
+ echo "data directory $DATA_PATH EXIST"
+ fi
+ if [[ ! -d $LOG_PATH ]]; then
+ echo "log directory $LOG_PATH not found"
+ mkdir -p $LOG_PATH; chmod 0774 $LOG_PATH
+ echo "log directory $LOG_PATH CREATED"
+ else
+ echo "log directory $LOG_PATH EXIST"
+ fi
+ chmod 0774 $DATA_PATH $LOG_PATH;
+ chown mysql:mysql $DATA_PATH $LOG_PATH;
+ if [[ -d $LOADSQL_PATH ]]; then
+ echo "sql directory $LOADSQL_PATH EXIST"
+ chmod 0774 $LOADSQL_PATH;
+ chown mysql:mysql $LOADSQL_PATH
+ fi
+ VOLUME_HOME=$DATA_PATH/mysql
+ if [[ ! -d $VOLUME_HOME ]]; then
+ echo "mariadb directory is empty or uninitialized"
+ echo "Installing MariaDB in $DATA_PATH ..."
+ mysql_install_db > /dev/null 2>&1
+ chown mysql:mysql -R $DATA_PATH
+ echo "Installing MariaDB in $DATA_PATH is DONE !"
+ else
+ echo "mariadb directory is initialized"
+ echo "Reusing MariaDB in $DATA_PATH ..."
+ chown mysql:mysql -R $DATA_PATH
+ fi
+ echo "" >> $MY_CONF
+ echo "[mysqld]" >> $MY_CONF
+ echo "datadir=$DATA_PATH" >> $MY_CONF
+ echo "log-error=$LOG_PATH/mysqld.log" >> $MY_CONF
+ echo "" >> $MY_CONF
+ echo "[mariadb]" >> $MY_CONF
+ echo "log-error=$LOG_PATH/mariadb.log" >> $MY_CONF
+}
+
+function config_startserver {
+ echo "start database for initial setup"
+ /usr/bin/mysqld_safe > /dev/null 2>&1 &
+ RET=1
+ while [[ RET -ne 0 ]]; do
+ echo "- waiting for database response"
+ sleep 1
+ mysql -uroot -e "status" > /dev/null 2>&1
+ RET=$?
+ done
+}
+
+function config_stopserver {
+ echo "stop database after initial setup"
+ mysqladmin -uroot shutdown
+}
+
+
+function config_createadmin {
+ PASS=${MYSQL_ROOT_PASSWORD:-$(pwgen -s 12 1)}
+ _word=$( [ ${MYSQL_ROOT_PASSWORD} ] && echo "preset" || echo "random" )
+ echo "Creating MariaDB admin user with ${_word} password"
+ mysql -uroot -e "CREATE USER 'admin'@'%' IDENTIFIED BY '$PASS'"
+ mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION"
+ echo ""
+ echo " +------------------------------------------------------"
+ echo " | You can now connect to this server using:"
+ echo " | user : admin"
+ echo " | password : $PASS"
+ echo " | shell : mysql -uadmin -p$PASS -h<host> -P<port>"
+ echo " +------------------------------------------------------"
+ echo ""
}
+function config_createuser {
+ if [[ -n "$MYSQL_USER" ]]; then
+ echo "Creating MariaDB $MYSQL_USER user with preset password"
+ mysql -uroot -e "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD'"
+ mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO '$MYSQL_USER'@'%' WITH GRANT OPTION"
+ echo ""
+ echo " +------------------------------------------------------"
+ echo " | You can now connect to this server using:"
+ echo " | user : $MYSQL_USER"
+ echo " | password : $MYSQL_PASSWORD"
+ echo " | shell : mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h<host> -P<port>"
+ echo " +------------------------------------------------------"
+ echo ""
+ fi
+}
+
+function config_createdatabase {
+ if [[ -n "$MYSQL_DATABASE" ]]; then
+ echo "processing database " $MYSQL_DATABASE
+ if [[ ! -d $DIR_DB_DATA/$MYSQL_DATABASE ]]; then
+ echo "database " $MYSQL_DATABASE " doesn't exist"
+ mysql -uroot -e "CREATE DATABASE $MYSQL_DATABASE DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;"
+ echo "database " $MYSQL_DATABASE " CREATED"
+ else
+ echo "database " $MYSQL_DATABASE " already exist"
+ fi
+ else
+ echo "no database to create"
+ fi
+}
+
+function config_importsql {
+ if [[ -n "$LOADSQL_PATH" ]]; then
+ echo "import sql data into " $MYSQL_DATABASE
+ if [[ ! -d $LOADSQL_PATH ]]; then
+ SCHEMALIST=$(find $LOADSQL_PATH/schema-*.sql -type f -printf "%f\n")
+ for SCHEMAFILE in $SCHEMALIST; do
+ echo "SET NAMES utf8;"|cat - $LOADSQL_PATH/$SCHEMAFILE > /tmp/out && mv /tmp/out $LOADSQL_PATH/$SCHEMAFILE
+ echo -n "Creating schema " $SCHEMAFILE " ... "
+ mysql -uroot $MYSQL_DATABASE < $LOADSQL_PATH/$SCHEMAFILE
+ echo " DONE"
+ done
+ DATALIST=$(find $LOADSQL_PATH/data-*.sql -type f -printf "%f\n")
+ for DATAFILE in $DATALIST; do
+ echo "SET NAMES utf8;"|cat - $LOADSQL_PATH/$DATAFILE > /tmp/out && mv /tmp/out $LOADSQL_PATH/$DATAFILE
+ echo -n "Creating data " $DATAFILE " ... "
+ mysql -uroot $MYSQL_DATABASE < $LOADSQL_PATH/$DATAFILE
+ echo " DONE"
+ done
+ fi
+ else
+ echo "no sql data to import into " $MYSQL_DATABASE
+ fi
+}
+
+
# End configuration process just before starting daemon
function end_config {
echo "=> END MARIADB CONFIGURATION"
@@ -80,6 +210,11 @@ fi
check_mariadb_environment | tee -a $STARTUPLOG
display_container_mariadb_header | tee -a $STARTUPLOG
begin_config | tee -a $STARTUPLOG
+config_startserver | tee -a $STARTUPLOG
+config_createadmin | tee -a $STARTUPLOG
+config_createuser | tee -a $STARTUPLOG
+config_createdatabase | tee -a $STARTUPLOG
+config_importsql | tee -a $STARTUPLOG
+config_stopserver | tee -a $STARTUPLOG
end_config | tee -a $STARTUPLOG
-display_container_started | tee -a $STARTUPLOG
start_daemon | tee -a $STARTUPLOG