User Tools

Site Tools


doc:appunti:linux:sa:mysql

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:mysql [2025/03/12 14:53] – [Restore selettivo di un database] niccolodoc:appunti:linux:sa:mysql [2026/04/24 15:19] (current) – [Restore selettivo di un database] niccolo
Line 178: Line 178:
 mysql> \. /path/to/file.sql mysql> \. /path/to/file.sql
 </code> </code>
 +
 +
 +===== Restore del database mysql =====
 +
 +Le informazioni su **account utente**, **password**, **privilegi** e **permessi** sono contenute nel database di nome **mysql**. È possibile fare il restore di tale database (se ne è stato fatto il dump), ma si deve verificare che le versioni di MariaDB origine e destinazionesiano le stesse. Tale procedura è consigliata solo nel caso in cui si debba recuperare un sistema su una installazione vuota del server MariaDB.
 +
 +La procedura seguente reinizializza completamente il server, recupera il dump e ripristina l'accesso root senza password come da impostazione predefinita Debian:
 +
 +<code bash>
 +systemctl stop mariadb.service
 +rm -r /var/lib/mysql
 +mkdir /var/lib/mysql
 +chown mysql:mysql /var/lib/mysql
 +mariadb-install-db --user=mysql --datadir=/var/lib/mysql
 +systemctl start mariadb.service
 +zcat mysql.sql.gz | mysql mysql
 +</code>
 +
 +Quindi ci si collega la back-end
 +
 +<code>
 +mysql mysql
 +</code>
 +
 +e si impartiscono i comandi SQL:
 +
 +<code sql>
 +ALTER USER 'root'@'localhost' IDENTIFIED VIA unix_socket;
 +FLUSH PRIVILEGES;
 +</code>
 +
 +
  
  
 ===== Restore selettivo di un database ===== ===== Restore selettivo di un database =====
  
-Se si ha un dump generato con **mysqldump --all-databases** potrebbe essere necessario fare il restore selettivo di un solo database. Una ricetta che si trova diffusamente in rete, ma che è davvero poco efficiente, consiste nel filtrare l'intero dump con il comando **sed** intercettando nelle istruzioni SQL l'inizio e la fine del database.+Se si ha un dump generato con **%%mysqldump --all-databases%%** potrebbe essere necessario fare il restore selettivo di un solo database. Una ricetta che si trova diffusamente in rete, ma che è davvero poco efficiente, consiste nel filtrare l'intero dump con il comando **sed** intercettando nelle istruzioni SQL l'inizio e la fine del database.
  
-Questo comando estrae dal dump compresso il database e lo scrive in un file SQL non compresso:+Questo comando estrae dal dump compresso il singolo database e lo scrive in un dump SQL non compresso:
  
 <code bash> <code bash>
 zcat mysql-dump.sql.gz \ zcat mysql-dump.sql.gz \
-    | sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' > dbname-dump.sql+    | sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' 
 +    > dbname-dump.sql
 </code> </code>
  
doc/appunti/linux/sa/mysql.1741787610.txt.gz · Last modified: by niccolo