Język SQL: zarządzanie użytkownikami

article-thumbnail

Tworzenie użytkowników

Tworzenie nowych użytkowników odbywa się za pomocą instrukcji CREATE USER:

CREATE USER nazwa_uzytkownika IDENTIFIED BY ’haslo’;

Przykładowo, utworzenie użytkownika Hanzo z hasłem shimada123:

CREATE USER Hanzo IDENTIFIED BY ’shimada123’;

Polecenie SELECT CURRENT USER() zwraca nazwę obecnie zalogowanego użytkownika.

Do zmiany hasła użytkownika służy SET PASSWORD:

Zmiana hasła zalogowanego użytkownika następuje po użyciu instrukcji:

SET PASSWORD=PASSWORD(‘nowe_haslo’);

W celu zmiany hasła innego użytkownika posłużymy się poleceniem:

SET PASSWORD FOR nazwa_uzytkownika=PASSWORD(‘nowe_haslo’);

Przykładowo, zmiana hasła użytkownika Hanzo na waG4T3ki:

SET PASSWORD FOR Hanzo=PASSWORD(‘waG4T3ki’);

Nadawanie uprawnień

Prawa nadaje się za pomocą instrukcji GRANT, a odbiera przy pomocy REVOKE.

GRANT prawo ON baza_danych.tabela TO użytkownik IDENTIFIED BY ‘haslo’;
REVOKE prawo ON baza_danych.tabela TO użytkownik IDENTIFIED BY ‘haslo’;

Przykładowo – nadanie użytkownikowi Hanzo z hasłem waG4T3ki uprawnień do odczytywania i wpisywania danych to tabeli zabytki w bazie muzeum :

GRANT SELECT, INSERT ON muzeum.zabytki TO Hanzo IDENTIFIED BY ‘waG4T3ki’;

Odebranie użytkownikowi Hanzo z hasłem waG4T3ki uprawnień do wstawiania danych do tabeli zabytki w bazie muzeum

REVOKE INSERT ON muzeum.zabytki TO Hanzo IDENTIFIED BY ‘waG4T3ki’;

Możliwe do zdefiniowania prawa to:

SELECT - odczytanie danych z tabeli 
INSERT - wstawianie danych do tabeli 
UPDATE - modyfikowanie danych w tabeli 
DELETE - usunięcie danych z tabeli 
REFERENCE - odwoływanie się do innych tabel 
CREATE - tworzenie nowych tabel i baz danych 
DROP - usuwanie tabel oraz baz danych 
ALL - wszystkie dostępne uprawnienia

Dodatkowo istnieje możliwość zdefiniowania następujących klauzul przy pomocy WITH:

MAX_QUERIES_PER_HOUR - ogranicza liczbę zapytań 
MAX_UPDATES_PER_HOUR - ogranicza liczbę zmian wprowadzanych do bazy
MAX _ CONNECTIONS_PER_HOUR - ogranicza liczbę logowań użytkownika w ciągu godziny
MAX_USER_CONNECTIONS - ogranicza liczbę jednoczesnych połączeń uzyskiwanych z jednego konta. 

Przykładowo:

GRANT ALL ON muzeum.zabytki TO Genji WITH MAX_UPDATES_PER_HOUR 5;

Powyższe polecenie nada użytkownikowi Genji wszystkie możliwe uprawnienia i ograniczy jego liczbę możliwych modyfikacji danych w bazie w ciągu godziny do 5.

Autor tekstu: Filip Kmiecik