From 943f14d67e71943bbc281bc2cfa8d23aabfc57db Mon Sep 17 00:00:00 2001 From: Stefan Pejcic Date: Sun, 19 May 2024 18:14:37 +0200 Subject: [PATCH] Update UPDATE.sh --- version/0.1.7/UPDATE.sh | 101 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/version/0.1.7/UPDATE.sh b/version/0.1.7/UPDATE.sh index d10a392..056f2ce 100644 --- a/version/0.1.7/UPDATE.sh +++ b/version/0.1.7/UPDATE.sh @@ -666,6 +666,107 @@ celebrate() { } + +replace_mysql_with_docker() { + # MySQL + + + +# EXPORT DATABASE! +mysqldump --defaults-extra-file="/usr/local/admin/db.cnf" panel > /tmp/DATABASE.sql + + + + # set random password + MYSQL_ROOT_PASSWORD=$(openssl rand -base64 -hex 9) + + + # run the container + docker run -d -p 3306:3306 --name openpanel_mysql \ + -e MYSQL_ROOT_PASSWORD="$MYSQL_ROOT_PASSWORD" \ + -e MYSQL_DATABASE=panel \ + -e MYSQL_USER=panel \ + -e MYSQL_PASSWORD="$MYSQL_ROOT_PASSWORD" \ + -v openpanel_mysql_data:/var/lib/mysql \ + --memory="1g" --cpus="1" \ + --restart=always \ + --oom-kill-disable \ + mysql/mysql-server + + + if docker ps -a --format '{{.Names}}' | grep -q "openpanel_mysql"; then + + # show password + echo "Generated MySQL password: $MYSQL_ROOT_PASSWORD" + + ln -s /usr/local/admin/db.cnf /etc/my.cnf + + # Update configuration files with new password + sed -i "s/\"mysql_password\": \".*\"/\"mysql_password\": \"${MYSQL_ROOT_PASSWORD}\"/g" /usr/local/admin/config.json + sed -i "s/\"mysql_user\": \".*\"/\"mysql_user\": \"panel\"/g" /usr/local/admin/config.json + sed -i "s/password = \".*\"/password = \"${MYSQL_ROOT_PASSWORD}\"/g" /usr/local/admin/db.cnf + sed -i "s/user = \".*\"/user = \"panel\"/g" /usr/local/admin/db.cnf + + # Fix for: ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2 + + # Function to check if MySQL is running + mysql_is_running() { + if mysqladmin --defaults-extra-file="/usr/local/admin/db.cnf" ping &> /dev/null; then + return 0 # MySQL is running + else + return 1 # MySQL is not running + fi + } + + # Wait for MySQL to start + wait_for_mysql() { + retries=5 + while [ $retries -gt 0 ]; do + if mysql_is_running; then + return 0 # MySQL is running + else + echo "Waiting for MySQL to start..." + sleep 5 + retries=$((retries - 1)) + fi + done + return 1 # MySQL did not start after retries + } + + # Wait for MySQL to start + wait_for_mysql + + # Create database + mysql --defaults-extra-file="/usr/local/admin/db.cnf" -e "CREATE DATABASE IF NOT EXISTS panel;" + #mysql --defaults-extra-file="/usr/local/admin/db.cnf" -e "GRANT PROCESS ON *.* TO 'panel'@'%';" + mysql --defaults-extra-file="/usr/local/admin/db.cnf" -D "panel" < /tmp/DATABASE.sql + + # Check if SQL file was imported successfully + if mysql --defaults-extra-file="/usr/local/admin/db.cnf" -D "panel" -e "SELECT 1 FROM plans LIMIT 1;" &> /dev/null; then + echo -e "${GREEN}Database is ready.${RESET}" + else + echo "SQL file import failed or database is not ready." + radovan 1 "Installation failed!" + fi + + else + echo "Docker container 'openpanel_mysql' does not exist. Please make sure the container is running." + echo "Installation failed! " + exit 1 + fi + + + + + + + + + + + +} + post_install_message() { # steps to revert the update