meta data for this page
  •  

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
mysql [2021/02/04 13:46] – [Zarządzanie użytkownikami] Paweł Grygorczukmysql [2025/11/05 09:37] (aktualna) – [MySQL] Paweł Grygorczuk
Linia 1: Linia 1:
 ====== MySQL ====== ====== MySQL ======
  
 +<WRAP center round important 90%>
 +Od wersji Debian 10 MySQL'a nie ma w standardowym repozytorium. Dodanie repozytorium:
 +<code bash>
 +apt-get install gnupg wget lsb-release
 +wget http://repo.mysql.com/mysql-apt-config_0.8.36-1_all.deb
 +dpkg -i mysql-apt-config_0.8.36-1_all.deb
 +</code>
 +Sprawdź jakie jest najnowsze repozytorium na stronie https://dev.mysql.com/downloads/repo/apt/.
 +</WRAP>
 ===== Backup bazy ===== ===== Backup bazy =====
  
Linia 39: Linia 48:
 Nadanie uprawnień dla nowego użytkownika. Nadanie uprawnień dla nowego użytkownika.
  
 +<code mysql>
 +CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
 +GRANT SELECT, INSERT, UPDATE ON baza.tabela TO 'nazwa_użytkownika'@'localhost';
 +</code>
 +
 +Aby nadać wszystkie uprawnienia, można użyć ''GRANT ALL PRIVILEGES''. W starszych wersjach MySQL można było dwa powyższe polecenia zapisać jako jedno poniższe:
 <code mysql> <code mysql>
 GRANT SELECT, INSERT, UPDATE ON baza.tabela TO 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło'; GRANT SELECT, INSERT, UPDATE ON baza.tabela TO 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'hasło';
 </code> </code>
  
-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''.+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:
  
 <code bash> <code bash>
 netstat -tupan | grep mysql netstat -tupan | grep mysql
 +</code>
 +
 +Połączenie ze zdalnego hosta:
 +
 +<code bash>
 +mysql -u nazwa_użytkownika -p'hasło' -h adres_ip -D nazwa_bazy
 </code> </code>
  
Linia 55: Linia 76:
 SHOW GRANTS FOR 'nazwa_użytkownika'@'localhost'; SHOW GRANTS FOR 'nazwa_użytkownika'@'localhost';
 </code> </code>
 +
 +Odebranie uprawnień.
 +
 +<code mysql>
 +DROP USER 'nazwa_użytkownika'@'localhost';
 +</code>
 +
 +Zmiana hasła.
 +
 +<code mysql>
 +ALTER USER 'user'@'localhost' identified by 'new-password';
 +</code>
 +===== Zarządzanie bazą =====
 +
 +Tworzenie nowej bazy danych
 +
 +<code mysql>
 +CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_polish_ci;
 +USE mydatabase;
 +</code>
 +
 +===== 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):
 +
 +<code mysql>
 +mysql> show global variables like '%logs%';
 ++----------------------------+---------+
 +| Variable_name              | Value   |
 ++----------------------------+---------+
 +| binlog_expire_logs_seconds | 2592000 |
 +| expire_logs_days           | 0       |
 +| innodb_print_ddl_logs      | OFF     |
 ++----------------------------+---------+
 +</code>
 +2592000 sekund to 30 dni. Wyczyścić logi możemy następującym poleceniem:
 +
 +<code mysql>
 +PURGE BINARY LOGS BEFORE '2021-03-09 07:30:00';
 +</code>
 +
 +Zmiany ustawień można dokonać następująco, przykładowo:
 +<code mysql>
 +SET GLOBAL binlog_expire_logs_seconds = 259200;
 +</code>
 +