-- Tworzenie użytkownika (dostęp tylko z localhost) CREATE USER 'jan'@'localhost' IDENTIFIED BY 'HasloTajne123!'; -- Tworzenie użytkownika (dostęp z dowolnego hosta) CREATE USER 'app_user'@'%' IDENTIFIED BY 'AppPass!'; -- Zmiana hasła (MySQL 8) ALTER USER 'jan'@'localhost' IDENTIFIED BY 'NoweHaslo456!'; -- Blokada konta (bez usuwania) ALTER USER 'jan'@'localhost' ACCOUNT LOCK; ALTER USER 'jan'@'localhost' ACCOUNT UNLOCK; -- Usunięcie użytkownika DROP USER 'jan'@'localhost'; -- Lista użytkowników SELECT user, host FROM mysql.user;
'jan'@'localhost' to inny użytkownik niż 'jan'@'%' (% = dowolny host).
-- Wszystkie uprawnienia do całej bazy GRANT ALL PRIVILEGES ON sklep.* TO 'jan'@'localhost'; -- Tylko odczyt (SELECT) do całej bazy GRANT SELECT ON sklep.* TO 'app_readonly'@'%'; -- Konkretne uprawnienia do konkretnej tabeli GRANT SELECT, INSERT, UPDATE ON sklep.produkty TO 'app_user'@'%'; -- Prawo do zarządzania uprawnieniami (delegacja) GRANT SELECT ON sklep.* TO 'kierownik'@'localhost' WITH GRANT OPTION; -- Odświeżenie uprawnień (po GRANT/REVOKE) FLUSH PRIVILEGES; -- Sprawdź uprawnienia użytkownika SHOW GRANTS FOR 'jan'@'localhost';
| Uprawnienie | Opis |
|---|---|
SELECT | Odczyt danych |
INSERT | Wstawianie nowych wierszy |
UPDATE | Modyfikacja istniejących wierszy |
DELETE | Usuwanie wierszy |
CREATE | Tworzenie tabel i baz |
DROP | Usuwanie tabel i baz |
ALTER | Zmiana struktury tabel |
ALL PRIVILEGES | Wszystkie uprawnienia |
-- Odebranie konkretnego uprawnienia REVOKE DELETE ON sklep.* FROM 'app_user'@'%'; -- Odebranie wszystkich uprawnień REVOKE ALL PRIVILEGES ON sklep.* FROM 'jan'@'localhost'; REVOKE GRANT OPTION ON sklep.* FROM 'jan'@'localhost'; FLUSH PRIVILEGES; -- Role (MySQL 8) — grupowanie uprawnień CREATE ROLE 'developer', 'readonly', 'admin'; GRANT SELECT, INSERT, UPDATE, DELETE ON sklep.* TO 'developer'; GRANT SELECT ON sklep.* TO 'readonly'; GRANT ALL PRIVILEGES ON sklep.* TO 'admin'; GRANT 'developer' TO 'jan'@'localhost'; GRANT 'readonly' TO 'app_readonly'@'%';
Po wykonaniu GRANT lub REVOKE należy zazwyczaj wykonać FLUSH PRIVILEGES;. Co robi to polecenie?
Napisz polecenie GRANT dające użytkownikowi 'reporter'@'localhost' uprawnienie tylko do odczytu tabeli raporty w bazie sklep:
Dopasuj zestaw uprawnień do roli użytkownika:
'nazwa'@'host' — para nazwa+host jest unikalnym identyfikatoremGRANT uprawnienia ON baza.tabela TO 'user'@'host';REVOKE uprawnienia ON baza.tabela FROM 'user'@'host';SHOW GRANTS FOR 'user'@'host'; — sprawdź uprawnieniaCREATE ROLE) ułatwiają zarządzanie grupami uprawnień