Wyświetlanie uprawnień użytkownika poleceniem SHOW GRANTS

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 11914 razy

Na poprzedniej stronie Programowanie → Podstawy SQL-a → Utworzenie nowego użytkownika poleceniem CREATE USER była mowa o tworzeniu nowego użytkownika, teraz najwyższa pora i czas, aby wyświetlić sobie, jakie użytkownik ma uprawnienia. Dla obecnie zalogowanego użytkownika wystarczy wpisać polecenie SHOW GRANTS w następujacy sposób:

SHOW GRANTS;
+--------------------------------------------------------------------
---------------------------------------------------------+
| Grants for root@localhost
                                                         |
+--------------------------------------------------------------------
---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'tutaj zaszyfrowane hasło' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
                                                         |
+--------------------------------------------------------------------
---------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>

Powyżej wyświetlone zostały informacje o przywilejach dla użytkownika root. Jak widać, użytkownik root ma pełne prawa dostępu do wszystkiego, co w bazie danych się znajduje (o czym informuje linijka GRANT ALL PRIVILAGES ON *.* TO - co w potocznym znaczeniu można ująć tak: przypisz wszystkie przywileje na * - wszystkie bazy danych . * - wszystkie tabele baz danych dla (i tu nazwa użytkownika).

Możliwe jest również wyświetlenie uprawnień dla dowolnego użytkownika, a można to osiągnąć w następujący sposób:

SHOW GRANTS FOR library@localhost;
+-------------------------------------------------------------------
---------------------------------+
| Grants for library@localhost
                                 |
+-------------------------------------------------------------------
---------------------------------+
| GRANT USAGE ON *.* TO 'library'@'localhost' IDENTIFIED BY PASSWORD 'tutaj zaszyfrowane hasło' |
+-------------------------------------------------------------------
---------------------------------+
1 row in set (0.00 sec)

mysql>

Użytkownik library został utworzony na poprzedniej stronie, bez nadawania mu przywilejów co spowodowało, że nie ma on dostępu do baz danych. Nie może więc on ani tworzyć nowych, ani odczytywać, czy zapisywać danych do baz, generalnie to nic nie może (no poza zalogowaniem się). O tym, że nic nie może mówi linijka GRANT USAGE ON *.* TO - czyli z SQL-a na nasze: nadaj żadne przywileje na wszystkich bazach danych i wszystkich tabelach tych baz danych dla (i tu nazwa użytkownika).

Propozycje książek