Jestem nowy po stronie administratora DBMS i konfigurowałem dziś wieczorem nową bazę danych (używając MySQL), kiedy to zauważyłem. Po przyznaniu użytkownikowi przywileju po raz pierwszy, tworzony jest kolejny grant, który wygląda jak
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
Dokumentacja mówi, że USAGE
przywilej oznacza „brak uprawnień”, więc wnioskuję, że przyznaje pracę hierarchicznie i być może użytkownik musi mieć jakieś przywileje dla wszystkich baz danych, więc służy to jako przechwytywanie wszystkich?
Nie rozumiem też, dlaczego ten wiersz zawiera IDENTIFIED BY
klauzulę, skoro utworzona przeze mnie dotacja jej nie zawiera (głównie dlatego, że nie rozumiem, czemu IDENTIFIED BY
służy klauzula).
Edycja: Przepraszamy, że nie podałem tego pierwotnie, dotacje były
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
mysql
database
privileges
grant
John M Naglick
źródło
źródło
Odpowiedzi:
Jak powiedziałeś, w MySQL
USAGE
jest synonimem „braku uprawnień”. Z podręcznika MySQL :USAGE
jest sposobem na poinformowanie MySQL, że konto istnieje, bez nadawania mu żadnych prawdziwych uprawnień. Dlatego mają tylko pozwolenie na używanie serwera MySQLUSAGE
. Odpowiada wierszowi w`mysql`.`user`
tabeli bez ustawionych uprawnień.IDENTIFIED BY
Klauzula wskazuje, że ustawione jest hasło dla tego użytkownika. Skąd wiemy, że użytkownik jest tym, za kogo się podaje? oni zidentyfikować się poprzez wysłanie poprawne hasło do swojego konta.Hasło użytkownika to jeden z atrybutów konta na poziomie globalnym, który nie jest powiązany z określoną bazą danych lub tabelą. Żyje również w
`mysql`.`user`
stole. Jeśli użytkownik nie ma żadnych innych uprawnieńON *.*
, są one nadawane,USAGE ON *.*
a ich skrót hasła jest tam wyświetlany. Często jest to efekt ubocznyCREATE USER
wypowiedzi. Kiedy użytkownik jest tworzony w ten sposób, początkowo nie ma on żadnych uprawnień, więc są jedynie nadawaneUSAGE
.źródło
Próbowałem znaleźć znaczenie
GRANT USAGE on *.* TO
i znalazłem tutaj. Mogę wyjaśnić, żeGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
zostanie to przyznane podczas tworzenia użytkownika za pomocą następującego polecenia (CREATE
):Kiedy przyznajesz uprawnienie w
GRANT
, nowe uprawnienia zostaną dodane do niego.źródło
Ponadto hasła mysql, gdy nie używają
IDENTIFIED BY
klauzuli, mogą być wartościami pustymi, jeśli nie są puste, mogą być zaszyfrowane. Ale takUSAGE
służy do modyfikowania konta poprzez nadanie prostych ograniczeń zasobów, takich jakMAX_QUERIES_PER_HOUR
, ponownie można to określić również za pomocą klauzuli WITH, w połączeniu zGRANT USAGE
(bez dodanych uprawnień) lubGRANT ALL
można również określićGRANT USAGE
na poziomie globalnym, poziom bazy danych, poziom stołu itp.źródło