Esportare ed importare un database MySQL/MariaDB via CLI

Per esportare il database utilizzeremo lo strumento mysqldump.

Se non presente nel sistema su Debian è possibile installarlo con il pacchetto mysql-client:

apt install mysql-client

Esportare un database

La sintassi del comando è abbastanza semplice:

mysqldump -h HOST -P PORTA -u UTENTE -p DATABASE > backup_db.sql

Di seguito illustrate le opzioni:

  • -h: Indirizzo del server MySQL, se non specificato verrà effettuato localhost il socket /var/run/mysqld.sock.
  • -P: Porta del server MySQL, se non specificata sarà utilizzata la porta 3306 (default).
  • -u: Nome utente.
  • -p: Indica che la connessione dell’utente richiede autenticazione con password.

L’unico argomento obbligatorio è il nome del database.

Come possiamo vedere non è stata specificata la password dell’utente direttamente nel comando per motivi di sicurezza. Verrà infatti richiesta dalla console una volta eseguito il comando.

Specificando “> backup_db.sql” andremo a reindirizzare l’output del comando (il nostro dump) sul file backup_db.sql anziché stamparlo sulla console.


Vogliamo ad esempio esportare il database negozio con l’utente root presente sul server mysql.azienda.local sulla porta di default e salvarlo sul file db_negozio.sql. Eseguiremo il seguente comando:

mysqldump -h mysql.azienda.local -u root -p negozio > db_negozio.sql

Esportare tutti i database

Se volessimo esportare tutti i database a cui ha accesso il nostro utente, dovremmo aggiungere l’opzione –all-databases senza alcun argomento:

mysqldump -h mysql.azienda.local -u root -p > miei_database.sql

Il nostro dump includerà anche eventuali database di sistema al quale l’utente utilizzato avrà accesso.


Importare un database

Dal dump generato possiamo importarlo con il comando mysql la cui sintassi è identica:

mysql -h HOST -P PORTA -u UTENTE -p DATABASE < backup_db.sql

L’unica differenza reale visibile nel comando è il simbolo < (minore) anziché > (maggiore). In questo caso viene letto il contenuto di backup_db.sql ed utilizzato come input (query da eseguire) al comando mysql.

Rispondi