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