HEX
Server: nginx/1.18.0
System: Linux proba.drlaca.appboxes.co 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64
User: appbox (1000)
PHP: 7.4.3-4ubuntu2.29
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/103/root/scripts/mysql.sh
#!/bin/bash
echo "**************************************************************"
echo "*                Installing MySQL Server                     *"
echo "**************************************************************"

echo "Installing MySQL"
apt update

echo "Creating directories"
mkdir -p /home/appbox/mysql/run
mkdir -p /home/appbox/mysql/data
mkdir -p /home/appbox/logs/mysql
mkdir -p /home/appbox/config/mysql

usermod -d /home/appbox/mysql/data mysql

echo "Creating log files"
touch /home/appbox/logs/mysql/error.log

echo "Moving sources"
mv /sources/mysqld.cnf /home/appbox/config/mysql/mysqld.cnf
chmod 600 /home/appbox/config/mysql/mysqld.cnf
chown -R appbox:appbox /home/appbox

echo "Create & secure runtime directories"
mkdir -p /var/run/mysqld
touch /var/run/mysqld/mysqld.sock
chown -R appbox:appbox /var/run/mysqld /run/mysqld/

# Check if 5.7 needs to be installed first
if hexdump -n 2 -d -s 0x33 /home/appbox/mysql/data/mysql/db.frm | head -1 | awk '{print $2}' | grep -q '^50'; then
    echo "Installing downgraded mysql"
    # Downgrade Mysql
    cat << EOF > /etc/apt/sources.list.d/mysql.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out entries below, but any other modifications may be lost.
# Use command 'dpkg-reconfigure mysql-apt-config' as root for modifications.
deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-apt-config
deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7
deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-tools
#deb http://repo.mysql.com/apt/ubuntu/ bionic mysql-tools-preview
deb-src http://repo.mysql.com/apt/ubuntu/ bionic mysql-5.7
EOF
    apt update
    VERSION=$(apt-cache policy mysql-server | grep 5.7 | head -1 | awk '{print $1}')
    if ! grep -q 'mysql' /etc/passwd; then
        groupadd -g 109 -o -r mysql
        useradd -M -N -g mysql -o -r -d /var/lib/mysql -s /bin/false -c "MySQL Server" -u 106 mysql
    fi
    apt install --allow-downgrades -y mysql-client=${VERSION} mysql-community-client=${VERSION} mysql-community-server=${VERSION} mysql-server=${VERSION}
    chown -R appbox:appbox /run/mysqld/
    truncate -s0 /home/appbox/logs/mysql/error.log
    if ! grep -q 'innodb-fast-shutdown' /home/appbox/config/mysql/mysqld.cnf; then
        echo "

innodb-fast-shutdown         = 1" >> /home/appbox/config/mysql/mysqld.cnf
    fi
    mysqld_safe --defaults-file=/home/appbox/config/mysql/mysqld.cnf --skip-grant-tables  --socket=/run/mysqld/mysqld.sock &

    while ! (mysqladmin ping)
    do
        sleep 3
        echo "waiting for mysql ..."
    done

    mysqladmin -uroot -h127.0.0.1 --protocol=tcp shutdown

    until ! ps aux | grep -v 'grep' | grep -q 'mysqld'; do
        sleep 3
        echo "waiting for mysql to die..."
    done

    rm /etc/apt/sources.list.d/mysql.list
    apt update
fi

apt install -y mysql-server php-mysql

echo "Starting MySQL for the first time"
chown -R appbox:appbox /var/run/mysqld /run/mysqld/
mysqld_safe --defaults-file=/home/appbox/config/mysql/mysqld.cnf --skip-grant-tables --initialize-insecure --upgrade=FORCE --socket=/run/mysqld/mysqld.sock

mysqld_safe --defaults-file=/home/appbox/config/mysql/mysqld.cnf --skip-grant-tables --upgrade=FORCE --socket=/run/mysqld/mysqld.sock &

while ! (mysqladmin --socket=/run/mysqld/mysqld.sock ping)
do
    sleep 3
    echo "waiting for mysql ..."
done

mysqladmin -uroot --socket=/run/mysqld/mysqld.sock shutdown

until ! ps aux | grep -v 'grep' | grep -q 'mysqld'; do
    sleep 3
    echo "waiting for mysql to die..."
done

echo "Defining Variables"
DB_NAME=${DB_NAME:-""}
DB_USER=${DB_USER:-""}
DB_PASS=${DB_PASS:-""}

echo "Cycle MySQL service"
service mysql start
service mysql stop

echo "Start MySQL in safe mode"
/usr/bin/mysqld_safe --defaults-file=/home/appbox/config/mysql/mysqld.cnf &
sleep 10

while ! (mysqladmin --socket=/run/mysqld/mysqld.sock ping)
do
    sleep 3
    echo "waiting for mysql ..."
done

echo "Setting up root password."
mysqladmin -u root password ${MYSQL_ROOT_PASSWORD}

echo "Enable remote root login."
mysql --user=root --password=${MYSQL_ROOT_PASSWORD} -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}';"

if [ -n "$DB_NAME" ]; then
    echo "Adding new DB $DB_NAME"
    mysql --user=root --password=${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE $DB_NAME"

    #We have setup a DB, so we can setup a cron to back it up.
    echo "+ Creating backup directory"
    mkdir -p /home/appbox/mysql/backup
    echo "0 0 * * * /usr/bin/mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} ${DB_NAME} > /home/appbox/mysql/backup/${DB_NAME}_BACKUP.sql" > /sources/backupcron
    cat /sources/backupcron | crontab -
fi
if [ -n "$DB_USER" ]; then
    echo "Adding User $DB_USER"
    mysql --user=root --password=${MYSQL_ROOT_PASSWORD} -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
    mysql --user=root --password=${MYSQL_ROOT_PASSWORD} -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;"
fi
if [ -n "$DB_NAME" ]; then
    mysql --user=root --password=${MYSQL_ROOT_PASSWORD} -e "select user, host FROM mysql.user;"
fi

echo "Killing MySQL"
pkill -9 mysql

#echo "Installing Database"
#mysql -u${DB_USER} -p${DB_PASS} ${DB_NAME} < /sources/dbsource.sql

# Setup NGINX Daemon
echo "Setting up MySQL Daemon"
mkdir -p /etc/service/mysql
cat << EOF >> /etc/service/mysql/run
#!/bin/sh
exec /usr/sbin/mysqld --defaults-file=/home/appbox/config/mysql/mysqld.cnf --verbose=0 --socket=/run/mysqld/mysqld.sock
EOF
chmod +x /etc/service/mysql/run

echo "Finished installing MySQL"