DCL - użytkownicy i ich uprawnienia
System uprawnień w MySQL-u pozwala na dokładne zdefiniowanie praw dostępu każdego użytkownika do określonej bazy, tabeli czy kolumny.
Oparty jest on na 5 tabelach znajdujących się w bazie mysql> USE mysql DATABASE changed mysql> SHOW TABLES; +-----------------+ | Tables_in_mysql | +-----------------+ | columns_priv | | db | | host | | tables_priv | | user | +-----------------+ Każda z tych tabel określa uprawnienia użytkownika na innym poziomie dostępu. Tabela db określa dostęp do baz danych, host definiuje dostęp do hostów baz danych, user określa listę wszystkich użytkowników serwera bazy danych, a tabele tables_priv i columns_priv - uprawnienia odpowiednio do tabel i ich kolumn. Wszelkie zmiany dotyczące tabel w bazie mysql mogą być dokonywane za pomocą poleceń SELECT, INSERT, UPDATE lub DELETE. Wygodniej i sprawniej można jednak zarządzać uprawnieniami za pomocą poleceń GRANT (dodawanie uprawnień) i REVOKE (odbieranie uprawnień). Zakładanie konta użytkownika - instrukcja CREATE USER span style="color: #ff0000;">'haso''haso']] ... Instrukcja służy do założenia nowego konta MySQL. Aby z niej korzystać sam musisz posiadać globalny przywilej
Do konta można opcjonalnie przypisać hasło opcjonalną klauzulą Instrukcja Usuwanie konta użytkownika - instrukcja DROP USER Instrukcja służy do usunięcia konta MySQL. Aby z niej korzystać sam musisz posiadać globalny przywilej
Instrukcja DELETE FROM mysql.user WHERE User='nazwa_uytkownika' AND Host='nazwa_hosta'; FLUSH PRIVILEGES; Polecenie Nadawanie i odbieranie uprawnień - instrukcje GRANT i REVOKE span style="color: #ff0000;">'haso''haso'
Polecenia GRANT i REVOKE pozwalają administratorowi systemu na przyznawanie i odbieranie praw użytkownikom MySQL na czterech poziomach uprawnień:
Uprawnienia nadawane są na podstawie kombinacji Aby używać poleceń GRANT lub REVOKE sam musisz posiadać przywilej GRANT OPTION. Listę przywilejów (uprawnień) pokazuje poniższa tabela:
Możesz przydzielać i odbierać przywileje globalne oraz do baz danych używajac składni ON *.* i baza.*. Jeżeli użyjesz ON * i masz wybranż bazę, to przywilej dotyczy tej bazy, w przeciwnym przypadku dotyczy wszystkich baz. Do tabel można nadawać jedynie przywileje: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, INDEX i ALTER. Dla kolumn można nadawać jedynie przywileje: SELECT, INSERT i UPDATE. Przywileje dla kolumn muszą być wymienione. nie wolno dla nich użyć opcji ALL. GRANT ALL nadaje tylko te przywilej, które są dostępne na danym poziomie. MySQL nie odbiera automatycznie żadnych przywilejów z wyjątkiem sytuacji, gdy usuwasz tabele lub bazy, dla których istnieją jakiekolwiek przywileje. Nazwę użytkownika należy podawać wraz z hostem, z którego może się logować do systemu w formacie:
nazwa_uzytkownika@localhost 'nazwa-uzytkownika'@'test-host'. nazwa_uzytkownika@'144.155.166.%' Podanie jedynie nazwy uzytkownika jest równoważne z podaniem Jeżeli użytkownik posiada przywileje w różnych kategoriach, to niezbędne w danym momencie uprawnienia wyznaczane są według poniższego algorytmu: przywileje_globalne OR (przywileje_do_bazy AND przywileje_do_hosta) OR przywileje_do_tabeli OR przywileje_do_kolumny Jeżeli podajesz uprawnienia dla nieistniejącego w tabeli Dla nowego użytkownika tworzone jest hasło podane w klauzuli IDENTIFIED BY. Jeżeli użytkownik posiadał już hasło, to zostanie ono zmienione. Jeżeli tworzysz nowego użytkownika i nie użyjesz tej klauzuli, to użytkownik może logować się bez hasła (będzie miał puste hasło). W klauzuli IDENTIFIED BY, hasło powinno być podane jako literał, bez użycia funkcji PASSWORD() koniecznej w instrukcji SET PASSWORD, np.: GRANT ... IDENTIFIED BY 'moje_haso'; Jeżeli użytkownik nie posiada żadnych przywilejów do jakiejś tabeli, to ta tabela jest dla niego niewidoczna (np. w poleceniu SHOW TABLES). Analogicznie dzieję się w przypadku baz danych: użytkownik widzi tylko te, w stosunku do których posiada jakiekolwiek prawa. Klauzula WITH GRANT OPTION pozwala użytkownikowi na przekazywanie swoich uprawnień innym użytkownikom. Przekazywane mogą być tylko te uprawnienia, które się samemu posiada. Klauzula dotyczy tylko aktualnie nadawanych uprawnień. nie ma wpływu na wcześnie posiadane lub później nadane uprawnienia. Z klauzuli tej należy korzystać z dużą ostrożnością, gdyż użytkownicy posiadający przywilej GRANT OPTION i różne uprawnienia, mogą je łączyć, co nie zawsze jest bezpieczne. Klauzule MAX_QUERIES_PER_HOUR Uwagi:
Zmiana nazwy użytkownika - instrukcja RENAME USER RENAME USER stara_nazwa TO nowa_nazwa [, stara_nazwa TO nowa_nazwa] ... Instrukcja służy do zmiany nazwy konta MySQL. Aby z niej korzystać sam musisz posiadać globalny przywilej
Instrukcja Zmiana hasła użytkownika - instrukcja SET PASSWORD SET PASSWORD = PASSWORD('jakie_haso''jakie_haso') Instrukcja Pierwsza składnia służy do zmiany hasła dla aktualnie zalogowanego użytkownika. Można z niej korzystać, o ile nie jest się zalogowanym anonimowo. Druga składnia służy do zmiany hasła podanego użytkownika na bieżącym serwerze bazy.
Aby z niej skorzystać musisz posiadać przywilej SET PASSWORD FOR 'jan'@'%.loc.gov' = PASSWORD('nowe_haso'); Ten sam efekt mozna osiągnąć koezystając z instrukcji: UPDATE mysql.user SET Password=PASSWORD('nowe_haso') WHERE User='jan' AND Host='%.loc.gov'; FLUSH PRIVILEGES; Polecenie
|