Uprawnienia SQL nadajemy poleceniem GRANT, odbieramy REVOKE
Przykład nadania uprawnień do odczytu i wstawiania w tabeli 'samochody’ z bazy 'aleks’ dla użytkownika 'roman’ na serwerze 'localhost’ (w przypadku, gdy Apache jest na tym samym serwerze, na którym jest baza) będzie wyglądać
1 2 3 4 | GRANT SELECT, INSERT ON aleks.samochody TO 'roman'@'localhost' WITH GRANT OPTION; |
WITH GRANT OPTION oznacza, że pozwalamy użytkownikowi roman na dalsze przekazanie otrzymanych uprawnień. Można też nadać tylko to jedno uprawnienie (do przekazywania dalej uprawnień) poleceniem
1 2 3 4 | GRANT USAGE ON adam.* TO 'adam'@'localhost' WITH GRANT OPTION; |
Polecenie GRANT służy też do dodawania nowych użytkowników oraz nadawania im praw np. do tworzenia nowych baz danych. W tym przypadku podajemy w poleceniu GRANT także hasło nowego użytkownika.
1 2 3 4 5 | GRANT ALL ON uzytkownik.* TO 'uzytkownik'@'localhost' IDENTIFIED BY 'haslo' WITH GRANT OPTION; |
Wówczas użytkownik otrzyma prawo do tworzenia bazy danych o nazwie swojego konta
1 2 | CREATE DATABASE uzytkownik; USE uzytkownik; |
Podobnie odbieramy uprawnienia, tutaj odbieramy wszystkie prawa do bazy uzytkownik (do wszystkich tabel) uzytkownikowi (tak się nazywa konto) na serwerze localhost
1 2 3 | REVOKE ALL ON uzytkownik.* FROM 'uzytkownik'@'localhost'; |
W przypadku nadawania serii uprawnień różnym użytkownikom systemu Linux, z których każdy ma inną bazę, można wygenerować plik tekstowy SQL z automatu, np. za pomocą skryptu powłoki:
1 2 3 4 5 6 | #!/bin/bash for file in /home/*; do IFS='/ ' read -a array <<< ${file} #Tu wpisujemy polecenie dla wszystkich użytkowników: echo grant usage on "${array[1]}".* to \'"${array[1]}"\'@\'localhost\' with grant option; done |
skrypt odpalamy w ten sposób (jeśli zapisujemy wynik do pliku):
1 | ./skrypt > seria.sql |