Wprawdzie zazwyczaj do operacji związanych z kopią zapasową MySQL śmiało można korzystać z phpMyAdmin, to czasem może być konieczne skorzystanie z linii poleceń.

MySQL: eksport i import bazy danych

Dlatego dziś postaram się Wam pokazać, jak w prosty sposób można wykonać podstawowe operacje związane z tworzeniem (i odtwarzaniem) kopii zapasowej baz(y) danych korzystając z linii komend – przyda się nie tylko w skryptach.

Tworzenie kopii zapasowej (eksport) bazy danych

W tym celu wykonania kopii konkretnej bazy korzystamy z polecenia:

mysqldump -u nazwa_użytkownika -p nazwa_bazy > backup.sql

Jeśli chcemy zrobić kopię wszystkich baz lekko modyfikujemy polecenie:

mysqldump -u nazwa_użytkownika -p --all-databases > backup.sql

Przywracanie bazy z kopii zapasowej (import)

Jeśli chcemy przywrócić/zaimportować bazę danych wystarczy skorzystać z polecenia:

mysql -u nazwa_użytkownika -p nazwa_bazy < backup.sql

Adres serwera bazy danych (host)

Domyślnie wszystkie operacje wykonywane są na maszynie lokalnej, czyli „localhost” (-h localhost), ale nic nie stoi na przeszkodzie by wykonać operacje na zdanym serwerze:

mysqldump -u nazwa_użytkownika -h nazwa_hosta_lub_adres_ip -p nazwa_bazy > backup.sql mysql -h localhost -u nazwa_użytkownika -p nazwa_bazy < backup.sql

Hasło użytkownika

Jeśli pojawi się konieczność podania hasła użytkownika w poleceniu (np. w skrypcie) wystarczy uzupełnić parametr/opcję „-p”:

-phasło

Czyli:

mysqldump -h nazwa_hosta_lub_adres_ip -u nazwa_użytkownika -phasło nazwa_bazy > backup.sql mysql -h nazwa_hosta_lub_adres_ip -u nazwa_użytkownika -phasło nazwa_bazy < backup.sql

Zwracam uwagę na brak spacji między „-p” a hasłem.

Dedykowany użytkownik

Jeśli zamierzacie wykonywać kopie zapasowe z pomocą skryptów, to warto stworzyć nowego użytkownika, który będzie miał tylko niezbędne uprawnienia.

Użytkownik do tworzenia kopii zapasowych

Wymagane uprawnienia:

SELECT, FILE, SHOW VIEW, SUPER, RELOAD, SHOW DATABASES, LOCK TABLES

Użytkownik do tworzenia i przywracania kopii zapasowych

Wymagane uprawnienia:

SELECT, INSERT, FILE, CREATE, ALTER, INDEX, DROP, SHOW VIEW, SUPER RELOAD, SHUTDOWN, SHOW DATABASES, LOCK TABLES

Tworzenie nowego użytkownika

Nowego użytkownika można utworzyć za pomocą phpMyAdmin, lub za pośrednictwem konsoli:

sudo mysql -uroot -p GRANT [UPRAWNIENIA] ON *.* TO 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło'; flush privileges; quit

Przykładowa komenda:

GRANT SELECT, FILE, SHOW VIEW, SUPER, RELOAD, SHOW DATABASES, LOCK TABLES ON *.* TO 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło';

Tak skonfigurowany użytkownik będzie mógł odczytywać bazy danych (tworzyć kopie), ale nie będzie mógł ich zapisywać (np. przywracać).

(!) Zgłoś błąd na stronie