terminal

KROTEK

menu

MYSQL + Opening ports installation

Choose your system:

Debian

Debian

Logo: Tobias Benjamin Kohl
CC BY-SA
Ubuntu

Ubuntu

Logo: Canonical
CC BY-SA
Rocky Linux

Rocky Linux

Logo: Rocky Enterprise Software Foundation
CC BY-SA
Alma Linux

Alma Linux

Logo: AlmaLinux OS Foundation
CC BY-SA
Alpine Linux

Alpine Linux

Logo: Alpine Linux
CC BY-SA

Install/Uninstall script (Clean /
Warning: Undefined array key "
Deprecated: htmlspecialchars(): Passing null to parameter " in /var/www/scripts/PHP_HTML/maininstall.php on line 49

Warning: Trying to access array offset on null in /var/www/scripts/PHP_HTML/maininstall.php on line 49

Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/scripts/PHP_HTML/maininstall.php on line 49
)

download content_copy expand_more
#!/bin/bash
set -e

# ========== COLORS ==========
NC='\033[0m'
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[38;5;117m'
BOLD='\033[1m'

# ========== SPINNER FUNCTIONS ==========
spinner_pid=""

start_spinner() {
  local msg="$1"
  echo -ne "${BLUE}[INFO]${NC} $msg... "
  trap stop_spinner INT
  (
    local spin='-\|/'
    while true; do
      for i in $(seq 0 $(( ${#spin} - 1 )) ); do
        echo -ne "\b${spin:$i:1}"
        sleep 0.1
      done
    done
  ) & spinner_pid=$!
  disown
}

stop_spinner() {
  if [[ -n "$spinner_pid" ]]; then
    kill "$spinner_pid" &>/dev/null || true
    wait "$spinner_pid" 2>/dev/null || true
    spinner_pid=""
  fi
  echo -e "\b${GREEN}[OK] ✓${NC}"
  trap - INT
}

run_step() {
  start_spinner "$1"
  shift
  "$@" &>/dev/null
  stop_spinner
}

run_multistep() {
  start_spinner "$1"
  shift
  {
    "$@"
  } &>/dev/null
  stop_spinner
}

# ========== PRINT BOX FUNCTION ==========
print_in_box() {
  local title="$1"
  shift
  local lines=("$@")
  local max_len=${#title}
  for line in "${lines[@]}"; do
    (( ${#line} > max_len )) && max_len=${#line}
  done
  local border_top="┌$(printf '─%.0s' $(seq 1 $((max_len + 2))))┐"
  local border_bottom="└$(printf '─%.0s' $(seq 1 $((max_len + 2))))┘"
  echo -e "${BLUE}${border_top}${NC}"
  local padding_left=$(( (max_len - ${#title}) / 2 ))
  local padding_right=$(( max_len - padding_left - ${#title} ))
  printf "${BLUE}│%*s%s%*s│${NC}\n" $((padding_left + 1)) "" "$title" $((padding_right + 1)) ""
  printf "${BLUE}│%*s│${NC}\n" $((max_len + 2)) ""
  for line in "${lines[@]}"; do
    local padding=$((max_len - ${#line}))
    printf "${BLUE}│ %s%*s │${NC}\n" "$line" $padding ""
  done
  echo -e "${BLUE}${border_bottom}${NC}"
}

# ========== PRINT mysql_secure_installation INFO ==========
print_mysql_secure_installation_intro() {
  print_in_box "MySQL Secure Installation" \
    "This wizard will help you:" \
    " - Set the MySQL root password" \
    " - Remove anonymous users" \
    " - Disallow remote root login" \
    " - Remove the test database" \
    " - Reload privilege tables"

  echo -e "\n${YELLOW}[INFO]${NC} Launching the original MySQL secure installation wizard..."
  sleep 1
  sudo mysql_secure_installation
}

# ========== DETECT DISTRIBUTION ==========
DISTRO=""
if [[ -f /etc/os-release ]]; then
  . /etc/os-release
  DISTRO=$(echo "$ID" | tr '[:upper:]' '[:lower:]')
fi
[[ "$DISTRO" == "rhel" ]] && DISTRO="centos"
echo -e "${BLUE}[INFO] Detected distribution: ${BOLD}${DISTRO}${NC}"

# ========== PACKAGE MANAGER COMMANDS ==========
case "$DISTRO" in
  debian|ubuntu)
    PKG_UPDATE="sudo apt update -y && sudo apt upgrade -y"
    PKG_INSTALL="sudo apt install -y"
    PKG_REMOVE="sudo apt remove --purge -y"
    PKG_CLEAN="sudo apt autoremove -y && sudo apt clean"
    MYSQL_PACKAGE="mysql-server"
    MYSQL_SERVICE="mysql"
    ;;
  almalinux|rocky|centos)
    PKG_UPDATE="sudo dnf update -y"
    PKG_INSTALL="sudo dnf install -y"
    PKG_REMOVE="sudo dnf remove -y"
    PKG_CLEAN="sudo dnf autoremove -y && sudo dnf clean all"
    MYSQL_PACKAGE="mysql-server"
    MYSQL_SERVICE="mysqld"
    ;;
  *)
    echo -e "${RED}[ERROR] Unsupported distribution: $DISTRO${NC}"
    exit 1
    ;;
esac

# ========== DETECT EXISTING DATABASE SERVER ==========
if command -v mysql >/dev/null 2>&1; then
  mysql_version=$(mysql --version)
  echo -e "${YELLOW}[WARNING]${NC} A MySQL/MariaDB installation has been detected:"
  echo -e "          ${mysql_version}"
  echo -ne "${YELLOW}[INFO]${NC} Do you want to continue anyway? [y/n]: "
  read -r CONTINUE_ANYWAY
  if [[ ! "$CONTINUE_ANYWAY" =~ ^[Yy]$ ]]; then
    echo -e "${RED}[ABORTED]${NC} Operation cancelled by user."
    exit 0
  fi
fi

# ========== USER ACTION ==========
echo -e "\n${BOLD}${YELLOW}=== MySQL Installer / Uninstaller ===${NC}\n"
echo "1) Install"
echo "2) Uninstall"
read -rp "Choose an option [1-2]: " ACTION

# ========== INSTALL ==========
if [[ "$ACTION" == "1" ]]; then
  echo -e "\n${BOLD}${YELLOW}=== Installation ===${NC}\n"
  
  if [[ "$DISTRO" == "almalinux" || "$DISTRO" == "rocky" || "$DISTRO" == "centos" ]]; then
    if ! sudo dnf repolist | grep -q "mysql.*community"; then
      echo "[INFO] Adding MySQL Community repository..."
      sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm &>/dev/null
    fi
  fi

  run_multistep "Updating system" bash -c "$PKG_UPDATE"
  run_multistep "Installing MySQL Server" bash -c "$PKG_INSTALL $MYSQL_PACKAGE"

  run_step "Enabling MySQL service" sudo systemctl enable "$MYSQL_SERVICE"
  run_step "Starting MySQL service" sudo systemctl start "$MYSQL_SERVICE"

  mysql_version=$(mysql --version 2>/dev/null || echo "MySQL not found")
  echo -e "${GREEN}[INFO]${NC} Installed MySQL version: ${BOLD}$mysql_version${NC}"

  read -p "$(echo -e "${YELLOW}[INFO]${NC} Run mysql_secure_installation? [y/n]: ")" run_secure
  if [[ "$run_secure" =~ ^[Yy]$ ]]; then
    print_mysql_secure_installation_intro
  fi

  read -p "$(echo -e "${YELLOW}[INFO]${NC} Create a new user and database? [y/n]: ")" create_user
  if [[ "$create_user" =~ ^[Yy]$ ]]; then
    read -rp "MySQL root password (for login): " MYSQL_ROOT_PWD
    read -rp "New MySQL username: " MYSQL_USER
    read -rp "New user password: " MYSQL_USER_PWD
    read -rp "Database name: " MYSQL_DB

    sudo mysql -uroot -p"$MYSQL_ROOT_PWD" <<EOF
CREATE DATABASE IF NOT EXISTS $MYSQL_DB;
CREATE USER IF NOT EXISTS '$MYSQL_USER'@'localhost' IDENTIFIED BY '$MYSQL_USER_PWD';
GRANT ALL PRIVILEGES ON $MYSQL_DB.* TO '$MYSQL_USER'@'localhost';
FLUSH PRIVILEGES;
EOF
    echo -e "${GREEN}[INFO]${NC} User and database created."
  fi

  mapfile -t mysql_status < <(sudo systemctl status "$MYSQL_SERVICE" | head -n 10)
  print_in_box "MySQL Service Status" "${mysql_status[@]}"

  echo -e "\n${GREEN}[DONE] ✅${NC} Installation complete."

# ========== UNINSTALL ==========
elif [[ "$ACTION" == "2" ]]; then
  echo -e "\n${BOLD}${YELLOW}=== Uninstallation ===${NC}\n"

  run_step "Stopping MySQL" sudo systemctl stop "$MYSQL_SERVICE" || true
  run_step "Disabling MySQL" sudo systemctl disable "$MYSQL_SERVICE" || true
  run_multistep "Removing MySQL server" bash -c "$PKG_REMOVE $MYSQL_PACKAGE"

  # Usunięcie repozytorium MySQL Community
  if rpm -q mysql80-community-release &>/dev/null; then
    echo "[INFO] Removing MySQL Community repository..."
    sudo dnf remove -y mysql80-community-release &>/dev/null
  fi

  read -rp "$(echo -e "${YELLOW}[INFO]${NC} Remove /var/lib/mysql (all data)? [y/n]: ")" remove_data
  if [[ "$remove_data" =~ ^[Yy]$ ]]; then
    run_step "Deleting MySQL data directory" sudo rm -rf /var/lib/mysql
  fi

  run_multistep "Cleaning up unused packages" bash -c "$PKG_CLEAN"

  echo -e "\n${GREEN}[DONE] ✅${NC} Uninstallation complete."

# ========== INVALID ==========
else
  echo -e "${RED}[ERROR] Invalid option selected.${NC}"
  exit 1
fi

Use the following command to auto-download and run:


Warning: Undefined array key "
Deprecated: htmlspecialchars(): Passing null to parameter " in /var/www/scripts/PHP_HTML/autoscripts.php on line 87

Warning: Trying to access array offset on null in /var/www/scripts/PHP_HTML/autoscripts.php on line 87
curl -fsSL -o script.sh "https://krotek.serveblog.net/how-to-install/DATABASE/MYSQL/scripts.php?variant=clean&type=script&system=%3Cbr+%2F%3E%3Cb%3EDeprecated%3C%2Fb%3E%3A++htmlspecialchars%28%29%3A+Passing+null+to+parameter+" && chmod +x script.sh && sudo ./script.sh