Browse Source

Update UPDATE.sh

Stefan Pejcic 1 year ago
parent
commit
943f14d67e
1 changed files with 101 additions and 0 deletions
  1. 101 0
      version/0.1.7/UPDATE.sh

+ 101 - 0
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