Echipa din spatele proiectelor automate de la RegalHost.eu a decis să împărtășească cu întreaga comunitate un instrument esențial pentru orice administrator de server. Știm cât de frustrant este să pierzi accesul la baza de date sau să te lupți cu erori de sintaxă între versiuni diferite de MySQL sau MariaDB (în special noua eroare 1348 pe MariaDB 10.11+).
Din dorința de a ridica standardele de administrare și pentru a ajuta la funcționarea mai rapidă a fiecărui proiect de Metin2, vă prezentăm AETERNA V1000.
Nu mai este nevoie să scrii manual zeci de rânduri de comandă în consola FreeBSD. Cu o interfață intuitivă, totul se rezolvă prin apăsarea tastelor 1, 2 sau 3.
Compatibilitate Universală: Rulează pe absolut orice versiune de FreeBSD și orice motor de bază de date (MySQL 5.5 - 8.0 sau MariaDB 5.5 - 11.x).
Auto-Detecție .cnf: Scriptul este un „detectiv” inteligent. Caută automat fișierul de configurare activ în sistem.
Protocol de Recuperare (Emergency Reset): Dacă scriptul nu găsește niciun fișier de configurare, creează unul optimizat pe loc și resetează parola root@localhost pentru a-ți reda accesul imediat.
Audit Tehnic în Timp Real: Îți arată direct în meniu dacă ai accesul Navicat blocat sau dacă setările de rețea sunt corecte.
Multi-Language (7 Limbi): Interfață completă în Română, Engleză, Turcă, Cehă, Germană, Poloneză și Maghiară. Toate mesajele de eroare și notificările sunt traduse.
Optimizare Navicat: Deblochează automat accesul extern și setează parametrii optimi de conexiune.
Analizează mediul de lucru (locație binar, datadir, versiune).
Oprește serviciile în siguranță pentru a evita coruperea tabelelor.
Porneste motorul în modul de reparație (Safe Mode).
Injectează parola nouă folosind o strategie triplă (ALTER USER / SET PASSWORD / UPDATE), asigurând succesul pe orice versiune.
Curăță fișierele PID și socket-urile blocate.
Repornește baza de date și îți oferă acces instant.
VIDEO: https://drive.google.com/file/d/1YHte3L ... ysqc-/view
Instalare rapidă:
ee reset-mysql.sh
# Lipiți codul scriptului, salvați și ieșiți.
chmod +x reset-mysql.sh
./reset-mysql.sh#!/bin/sh
# =================================================================
# AETERNA V1000 - ULTIMATE ARCHITECT | FULLY MULTILINGUAL
# =================================================================
E=$(printf '\033'); C_M="${E}[1;34m"; C_S="${E}[1;32m"; C_R="${E}[1;31m"; C_Y="${E}[1;33m"; C_W="${E}[1;37m"; C_0="${E}[0m"
[ -z "$L" ] && L="RO"
LAST_OP="NONE"
# --- [ MOTORUL DE TRADUCERI INTEGRAL ] ---
lang() {
case $L in
"CZ") t_m1="OPRAVA"; t_m2="LOGY"; t_m3="JAZYK"; t_m4="KONEC"; t_st="STAV"; t_cfg="KONFIG"; t_bad="ŠPATNÉ"; t_ok="DOBRÉ"; t_wait="ČEKEJTE PROSÍM..."; t_pass="NOVÉ HESLO:"; t_found="KONFIGURACE NALEZENA V:"; t_notfound="KONFIGURACE NENALEZENA! RESETOVÁNÍ root@localhost PRO ZOTAVENÍ..."; t_audit="TECHNICKÝ AUDIT"; t_net="SÍŤOVÝ PŘÍSTUP"; t_nav="NAVICAT PŘÍSTUP"; t_err="KRITICKÁ CHYBA MOTORU!";;
"TR") t_m1="ONARIM"; t_m2="LOGLAR"; t_m3="DIL"; t_m4="CIKIS"; t_st="DURUM"; t_cfg="YAPILANDIRMA"; t_bad="KOTU"; t_ok="IYI"; t_wait="LUTFEN BEKLEYIN..."; t_pass="YENI SIFRE:"; t_found="YAPILANDIRMA BULUNDU:"; t_notfound="YAPILANDIRMA BULUNAMADI! KURTARMA ICIN root@localhost SIFIRLANIYOR..."; t_audit="TEKNIK DENETIM"; t_net="AG ERISIMI"; t_nav="NAVICAT ERISIMI"; t_err="KRITIK MOTOR HATASI!";;
"DE") t_m1="REPARATUR"; t_m2="LOGS"; t_m3="SPRACHE"; t_m4="ENDE"; t_st="STATUS"; t_cfg="KONFIG"; t_bad="SCHLECHT"; t_ok="GUT"; t_wait="BITTE WARTEN..."; t_pass="NEUES PASSWORT:"; t_found="KONFIGURATION GEFUNDEN UNTER:"; t_notfound="KONFIGURATION NICHT GEFUNDEN! RESET root@localhost ZUR WIEDERHERSTELLUNG..."; t_audit="TECHNISCHES AUDIT"; t_net="NETZWERKZUGRIFF"; t_nav="NAVICAT ZUGRIFF"; t_err="KRITISCHER MOTORFEHLER!";;
"PL") t_m1="NAPRAWA"; t_m2="LOGI"; t_m3="JEZYK"; t_m4="WYJSCIE"; t_st="STATUS"; t_cfg="KONFIG"; t_bad="ZLE"; t_ok="DOBRZE"; t_wait="PROSZE CZEKAC..."; t_pass="NOWE HASLO:"; t_found="KONFIGURACJA ZNALEZIONA W:"; t_notfound="NIE ZNALEZIONO KONFIGURACJI! RESETOWANIE root@localhost W CELU ODZYSKANIA..."; t_audit="AUDYT TECHNICZNY"; t_net="DOSTEP SIECIOWY"; t_nav="DOSTEP NAVICAT"; t_err="KRYTYCZNY BLAD SILNIKA!";;
"HU") t_m1="JAVITAS"; t_m2="NAPLO"; t_m3="NYELV"; t_m4="KILEPES"; t_st="ALLAPOT"; t_cfg="BEALLITAS"; t_bad="ROSSZ"; t_ok="JO"; t_wait="KEREM VARJON..."; t_pass="UJ JELSZO:"; t_found="KONFIGURACIO TALALHATO:"; t_notfound="KONFIGURACIO NEM TALALHATO! root@localhost RESETELÉSE A HELYREÁLLÍTÁSHOZ..."; t_audit="MUSZAKI ELLENORZES"; t_net="HALOZATI HOZZAFERES"; t_nav="NAVICAT HOZZAFERES"; t_err="KRITIKUS MOTORHIBA!";;
"EN") t_m1="REPAIR"; t_m2="LOGS"; t_m3="LANG"; t_m4="EXIT"; t_st="STATUS"; t_cfg="CONFIG"; t_bad="BAD"; t_ok="GOOD"; t_wait="PLEASE WAIT..."; t_pass="NEW PASSWORD:"; t_found="CONFIG FOUND AT:"; t_notfound="CONFIG NOT FOUND! RESETTING root@localhost FOR RECOVERY..."; t_audit="TECHNICAL AUDIT"; t_net="NETWORK ACCESS"; t_nav="NAVICAT ACCESS"; t_err="CRITICAL ENGINE ERROR!";;
*) t_m1="REPARARE"; t_m2="LOGURI"; t_m3="LIMBA"; t_m4="IESIRE"; t_st="STATUS"; t_cfg="CONFIG"; t_bad="RAU"; t_ok="BINE"; t_wait="VA RUGAM ASTEPTATI..."; t_pass="PAROLA NOUA:"; t_found="CONFIGURATIE GASITA IN:"; t_notfound="CONFIGURATIE NEGASITA! RESETARE root@localhost PENTRU RECUPERARE..."; t_audit="AUDIT TEHNIC"; t_net="ACCES RETEA"; t_nav="ACCES NAVICAT"; t_err="EROARE CRITICA MOTOR!";;
esac
}
find_cfg() {
CFG_FINAL=""
for f in /var/db/mysql/my.cnf /usr/local/etc/my.cnf /etc/my.cnf /usr/local/etc/mysql/my.cnf; do
[ -f "$f" ] && CFG_FINAL="$f" && break
done
if [ -z "$CFG_FINAL" ]; then
lang
printf "\n${C_R} [!] $t_notfound ${C_0}\n"
printf "[mysqld]\nbind-address = 0.0.0.0\nmax_connections = 1000\nquery_cache_size = 64M\n" > /var/db/mysql/my.cnf
CFG_FINAL="/var/db/mysql/my.cnf"
service mysql-server stop >/dev/null 2>&1
/usr/local/bin/mysqld_safe --skip-grant-tables --skip-networking >/dev/null 2>&1 &
sleep 6
mysql -u root <<EOF
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
FLUSH PRIVILEGES;
EOF
pkill -9 mysqld; pkill -9 mariadbd; sleep 2; service mysql-server start >/dev/null 2>&1
fi
echo "$CFG_FINAL"
}
analyze() {
for b in /usr/local/libexec/mariadbd /usr/local/libexec/mysqld /usr/local/bin/mariadbd /usr/local/bin/mysqld; do [ -x "$b" ] && BIN="$b" && break; done
CFG_A=$(find_cfg)
DDIR=$(grep -i "^datadir" "$CFG_A" 2>/dev/null | cut -d'=' -f2 | tr -d ' ')
[ -z "$DDIR" ] && DDIR="/var/db/mysql"
V_A=$(mysql -V 2>/dev/null | grep -oE '[0-9]+\.[0-9]+' | head -1)
echo "$BIN|$CFG_A|$DDIR|$V_A"
}
show_audit() {
lang; E_A=$(analyze); C_A=$(echo "$E_A" | cut -d'|' -f2)
printf "\n${C_W}--- $t_audit: $(basename "$C_A" 2>/dev/null || echo "DEFAULT") ---${C_0}\n"
if [ -f "$C_A" ]; then
grep -E "^bind-address *= *0.0.0.0" "$C_A" >/dev/null && printf " ${C_S}[$t_ok]${C_0} $t_nav\n" || printf " ${C_R}[$t_bad]${C_0} $t_nav\n"
grep "^skip-networking" "$C_A" | grep -v "#" >/dev/null && printf " ${C_R}[$t_bad]${C_0} $t_net\n" || printf " ${C_S}[$t_ok]${C_0} $t_net\n"
fi
}
execute_repair() {
lang; E_R=$(analyze); B=$(echo "$E_R" | cut -d'|' -f1); C=$(echo "$E_R" | cut -d'|' -f2); D=$(echo "$E_R" | cut -d'|' -f3)
service mysql-server stop >/dev/null 2>&1
pkill -9 mysql; pkill -9 mysqld; pkill -9 mariadbd; sleep 2
rm -f /tmp/omni.sock "$D"/*.pid
$B --datadir="$D" --user=mysql --skip-grant-tables --skip-networking --socket=/tmp/omni.sock >/tmp/omni.log 2>&1 &
printf "${C_Y} $t_wait ${C_0}"
for i in 1 2 3 4 5 6 7 8 9 10; do printf "◈"; sleep 1; done; echo ""
if [ ! -S /tmp/omni.sock ]; then printf "${C_R} [!] $t_err ${C_0}\n"; read p; return; fi
mysql --socket=/tmp/omni.sock -u root -N -e "SELECT User, Host FROM mysql.user" > /tmp/u.lst
echo "${C_M}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${C_0}"
idx=1; while read -r u h; do printf " ${C_Y}[%d]${C_0} %s@%s\n" "$idx" "$u" "$h"; eval "u$idx=\$u"; eval "h$idx=\$h"; idx=$((idx+1)); done < /tmp/u.lst
echo "${C_M}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${C_0}"
printf " ID: "; read id; USR=$(eval echo \$u$id); HST=$(eval echo \$h$id)
[ -z "$USR" ] && { pkill -9 mysqld; pkill -9 mariadbd; return; }
printf " $t_pass "; read PW
mysql --socket=/tmp/omni.sock -u root <<EOF >/dev/null 2>&1
FLUSH PRIVILEGES;
ALTER USER '$USR'@'$HST' IDENTIFIED BY '$PW';
SET PASSWORD FOR '$USR'@'$HST' = PASSWORD('$PW');
UPDATE mysql.user SET Password=PASSWORD('$PW'), Host='%' WHERE User='$USR' AND Host='$HST';
FLUSH PRIVILEGES;
EOF
pkill -9 mysqld; pkill -9 mariadbd; sleep 2; service mysql-server start >/dev/null 2>&1
LAST_OP="$USR"
}
while true; do
lang; E_M=$(analyze); C_M_P=$(echo "$E_M" | cut -d'|' -f2); D_M_P=$(echo "$E_M" | cut -d'|' -f3); V_M_P=$(echo "$E_M" | cut -d'|' -f4)
sockstat -4l | grep :3306 >/dev/null && S_D="${C_S}ONLINE${C_0}" || S_D="${C_R}OFFLINE${C_0}"
clear
printf "${C_M}┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓${C_0}\n"
printf "┃ ${C_W}AETERNA V1000 - ULTIMATE${C_0} ${C_W}VER: ${C_Y}%-10s${C_M}┃${C_0}\n" "$V_M_P"
printf "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫${C_0}\n"
printf "┃ ${C_W}$t_st: %-18s ${C_W}USER: ${C_Y}%-11s${C_M}┃${C_0}\n" "$S_D" "$LAST_OP"
printf "┃ ${C_W}$t_cfg: ${C_M}%-39s┃${C_0}\n" "${C_M_P:-DEFAULT}"
printf "┃ ${C_W}DATA: ${C_M}%-39s┃${C_0}\n" "$D_M_P"
printf "${C_M}┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛${C_0}\n"
show_audit
printf "\n ${C_M}[1]${C_0} $t_m1 ${C_M}[2]${C_0} $t_m2 ${C_M}[3]${C_0} $t_m3 ($L) ${C_M}[4]${C_0} $t_m4\n"
printf "\n > "; read opt
case $opt in
1) execute_repair;;
2) [ -f /tmp/omni.log ] && tail -n 20 /tmp/omni.log || echo "No Logs"; read p;;
3) printf " RO/EN/TR/CZ/DE/HU/PL: "; read L; L=$(echo "$L" | tr 'a-z' 'A-Z');;
4) exit 0;;
*) service mysql-server start >/dev/null 2>&1;;
esac
done

