meta data for this page
To jest stara wersja strony!
MySQL
Backup bazy
Bezpośrednio z wiersza polecenia (bez logowania do bazy) wydajemy polecenie mysqldump jak poniżej:
cd /home/backup mysqldump -uroot -phaslo nazwa_bazy > nazwa_pliku.sql
Backup określonych tabel wykonamy następująco (t1, t2, t3 - nazwy tabel):
mysqldump -uroot -phaslo nazwa_bazy t1 t2 t3 > nazwa_pliku.sql
Przy dużej ilości danych w tabeli, może się przydać przełącznik where:
mysqldump -uroot -phaslo nazwa_bazy nazwa_tabeli --where='id IN ("1", "2")' > nazwa_pliku.sql
Przywrócenie backupu
Przywrócenie z Basha:
mysql -u root -p db_name < db_dump.sql
Przywrócenie z poziomu MySQL:
mysql -u root -p # logujemy się use db_name; source db_backup.sql
Zarządzanie użytkownikami
Nadanie uprawnień dla nowego użytkownika.
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; GRANT SELECT, INSERT, UPDATE ON baza.tabela TO 'nazwa_użytkownika'@'localhost';
W starszych wersjach MySQL można było dwa powyższe polecenia zapisać jako jedno poniższe:
GRANT SELECT, INSERT, UPDATE ON baza.tabela TO 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło';
Zamiast localhost możemy podać konkretny adres IP lub % - jeśli chcemy umożliwić łączenie się z dowolnego adresu. Jeżeli chcesz zezwolić na łączenie się z innych adresów niż localhost, w pliku /etc/mysql/my.cnf.migrated zakomentuj linię z wpisem bing-address = 127.0.0.1. Poniższym poleceniem sprawdzisz, na jakich portach nasłuchuje MySQL:
netstat -tupan | grep mysql
Połączenie ze zdalnego hosta:
mysql -u nazwa_użytkownika -p'hasło' -h adres_ip -D nazwa_bazy
Wypisanie istniejących uprawnień.
SELECT host, user, password FROM mysql.user ORDER BY user, host; SHOW GRANTS FOR 'nazwa_użytkownika'@'localhost';
Odebranie uprawnień.
DROP USER 'nazwa_użytkownika'@'localhost';
Zmiana hasła.
ALTER USER 'user'@'localhost' identified by 'new-password';
Zarządzanie bazą
Tworzenie nowej bazy danych
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_polish_ci; USE mydatabase;
Rotowanie logów
Domyślnie pliki logów są przechowywane w /var/lib/mysql. Warto regularnie sprawdzić ile zajmują miejsca: du -sh /var/lib/mysql/*.
Aktualne ustawienia logów sprawdzimy (będąc zalogowanym jako root do MySQL):
mysql> show global variables like '%logs%'; +----------------------------+---------+ | Variable_name | Value | +----------------------------+---------+ | binlog_expire_logs_seconds | 2592000 | | expire_logs_days | 0 | | innodb_print_ddl_logs | OFF | +----------------------------+---------+
2592000 sekund to 30 dni. Wyczyścić logi możemy następującym poleceniem:
PURGE BINARY LOGS BEFORE '2021-03-09 07:30:00';
Zmiany ustawień można dokonać następująco, przykładowo:
SET GLOBAL binlog_expire_logs_seconds = 259200;