System uprawnień
Jednym z założeń baz danych, jest możliwość obsługiwania wielu użytkowników. Po pierwszym uruchomienia serwera, jedynym zarejestrowanym użytkownikiem jest root. Root (ang. korzeń), to tradycyjna nazwa uniksowego konta, które ma pełną kontrolę nad systemem. To konto, powinno być wykorzystywane tylko do celów administracyjnych. Dla każdego użytkownika MySQL, należy utworzyć konto i nadać mu hasło dostępu. Co prawda nadawanie haseł nie jest obowiązkowe, jednak ze względów bezpieczeństwa jest nieodzowne.
MySQL posiada system uprawnień (przywilejów), dzięki któremu każdy użytkownik może wykonywać tylko te operacje, na które mu zezwolił administrator. Podczas rejestracji nowego użytkownika, administrator wyszczególnia czynności, które będzie on mógł wykonywać. Obowiązuje przy tym zasada najmniejszego przywileju - użytkownik powinien dysponować minimalnym zasobem uprawanień, tylko takich, które są niezbędne do wykonywania powierzonych mu zadań.
Poziomy uprawnień
W MySQL rozróżniamy natępujące poziomy uprawnień:
- globalny - przyznane uprawnienia obowiązują we wszystkich istniejących bazach,
- baza danych - uprawnienia w zakresie danej bazy danych,
- tabela - w zakresie danej tabeli,
- kolumna - w zakresie danej kolumny danej tabeli.
Typy uprawnień
MySQL wykorzystuje następujące typy uprawnień:
- uprawnienia nadawane użytkownikom,
- uprawnienia administratorów,
- uprawnienia specjalne.
Nikomu, z wyjątkiem administratora, nie należy udostępniać systemowej bazy mysql, ponieważ są tam przechowywane identyfikatory oraz hasła wszystkich użytkowników. Uprawnienia użytkowników są związane z konkretnymi poleceniami SQL, które będziemy stopniowo poznawać w dalszym toku nauki. Nie zapamiętuj pokazanych zestawień, tylko przeanalizuj je.
Uprawnienie | Poziom | Opis |
---|---|---|
SELECT | Tabele, kolumny | Pozwala wyszukiwać rekordy w tabelach |
INSERT | Tabele, kolumny | Pozwala wstawiać nowe wiersze w tabelach |
UPDATE | Tabele, kolumny | Pozwala zmieniać wartości zapisane w tabeli |
DELETE | Tabele | Pozwala usuwać wiersze z tabeli |
INDEX | Tabele | Pozwala tworzyć i usuwać indeksy w tabelach |
ALTER | Tabele | Pozwala zmieniać strukturę istniejących tabel, np. dodawanie kolumn, zmiany nazw kolumn i tabel, zmiany typów danych w kolumnach |
CREATE | Bazy danych, tabele | Pozwala tworzyć nowe tabele i bazy danych |
DROP | Bazy danych, tabele | Pozwala usuwać bazy lub tabele |
Uprawnienie | Opis |
---|---|
CRETE TEMPORARY TABLES | Pozwala administratorowi używać słowo kluczowe TEMPORARY w instrukcji CREATE TABLE |
FILE | Pozwala wczytywać dane z plików do tabel i odwrotnie |
LOCK TABLES | Pozwala jawnie używać instrukcji LOCK TABLES |
PROCESS | Pozwala śledzić procesy wykonywane przez serwer i je przerywać |
RELOAD | Pozwala powtórnie załadować tabele zwierające informacje na temat praw dostępu oraz na odświeżenie przywilejów, listy nazw łączących się komputerów, dziennika zdarzeń i tabel |
REPLICATION CLIENT | Pozwala używać instrukcję SHOW STATUS na nadawcach i odbiorcach replikacji |
REPLICATION SLAVE | Pozwala serwerom będącym odbiorcami replikacji łączyć się z serwerem nadawcą. |
SHOW DATABASES | Pozwala odczytywać listę wszystkich baz danych przy użyciu instrukcji SHOW DATABASES. Użytkownicy, którzy nie mają tego uprawnienia, mogą zobaczyć tylko bazy, do których przydzielono im dostęp |
SHUTDOWN | Pozwala zakończyć pracę serwera MySQL |
SUPER | Pozwala zabijać wątki, należące do dowolnego użytkownika |
Uprawnienie | Opis |
---|---|
ALL | Nadaje wszystkie uprawnienia opisane w poprzednich tabelach |
USAGE | Nie nadaje żadnych uprawnień. Powoduje zarejestrowanie użytkownika i pozwala mu na zalogowanie się, lecz jakiekolwiek czynności są dla niego niedostępne. Odpowiednie przywileje są w takiej sytuacji nadawane później |
Użytkownik root posiada wszystkie uprawnienia:

Pokazane uprawnienia będziemy stosować w konkretnych przykładach, podczas kolejnych zajęć.