36 lines
1.7 KiB
Bash
36 lines
1.7 KiB
Bash
#!/bin/bash
|
|
NEW_DB_IP="db03.eqn" # Hostname/IP del nuovo LXC
|
|
DB_NAME="eqn_prod"
|
|
OLD_PASS="old_db_password"
|
|
|
|
echo "1. Esportazione Database $DB_NAME..."
|
|
# Nota: ho aggiunto --add-drop-database per pulire eventuali test precedenti
|
|
mysqldump -u root -p"$OLD_PASS" --single-transaction --routines --triggers --databases $DB_NAME | ssh root@$NEW_DB_IP "mariadb"
|
|
|
|
echo "2. Generazione file utenti e permessi..."
|
|
|
|
echo "2. Generazione file utenti e permessi..."
|
|
|
|
# Estrae l'istruzione completa direttamente come la scrive MariaDB
|
|
# Questo metodo evita di ricostruire la stringa manualmente con CONCAT
|
|
mysql -u root -p"$OLD_PASS" -B -N -e "SELECT CONCAT('CREATE USER IF NOT EXISTS ', QUOTE(user), '@', QUOTE(host), ' IDENTIFIED VIA mysql_native_password USING ', QUOTE(password), ';') FROM mysql.user WHERE user NOT IN ('root','mysql.sys','mariadb.sys','debian-sys-maint','phpmyadmin');" > users_statements.sql
|
|
|
|
# Estrae i privilegi (GRANT)
|
|
mysql -u root -p"$OLD_PASS" -B -N -e "SELECT CONCAT('SHOW GRANTS FOR ', QUOTE(user), '@', QUOTE(host), ';') FROM mysql.user WHERE user NOT IN ('root','mysql.sys','mariadb.sys','debian-sys-maint','phpmyadmin');" | \
|
|
mysql -u root -p"$OLD_PASS" -B -N | \
|
|
sed 's/$/;/' | grep -vE "phpmyadmin|eqn_test|wp_eqn" > grants_statements.sql
|
|
|
|
# Unisce i file
|
|
cat users_statements.sql grants_statements.sql > final_users.sql
|
|
|
|
echo "3. Importazione utenti su $NEW_DB_IP..."
|
|
# Copia il file sul nuovo server
|
|
scp final_users.sql root@$NEW_DB_IP:/tmp/final_users.sql
|
|
|
|
# Esegue l'importazione e pulisce i privilegi
|
|
ssh root@$NEW_DB_IP "mariadb < /tmp/final_users.sql && mariadb -e 'FLUSH PRIVILEGES;'"
|
|
|
|
# Pulizia file locali (opzionale)
|
|
rm users_statements.sql grants_statements.sql final_users.sql
|
|
|
|
echo "4. Migrazione completata con successo." |