Jak mogę pokazać uprawnienia użytkownika w MySQL?

69

Wiem, że mogę ustawić uprawnienia użytkownika w następujący prosty sposób:

grant all on [database name].[table name] to [user name]@[host name];

Ale jak mogę zobaczyć istniejące uprawnienia?

Muszę zobaczyć dane podobne do tych, które są wykorzystywane w grantach. Innymi słowy, chcę wiedzieć, że dany użytkownik ma określony dostęp do danej tabeli danej bazy danych z danego hosta.

Jak mogę to dostać?

rzymski
źródło

Odpowiedzi:

75

Polecenie SHOW GRANTS [FOR user]jest tym, czego szukasz. Zobacz tutaj po więcej szczegółów.

John Gardeniers
źródło
51

Oto dokumentacja MySQL dla SHOW GRANTS:

SHOW GRANTS [FOR user]

Ta instrukcja zawiera listę instrukcji GRANT lub instrukcji, które muszą zostać wydane w celu zduplikowania uprawnień przyznanych dla konta użytkownika MySQL. Konto jest nazywane przy użyciu tego samego formatu, co w przypadku wyciągu GRANT; na przykład „jeffrey” @ „localhost”. Jeśli podasz tylko część nazwy użytkownika w nazwie konta, zostanie użyta część nazwy hosta „%”. Aby uzyskać dodatkowe informacje na temat określania nazw kont, zobacz Sekcja 12.5.1.3, „Składnia GRANT”.

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

Aby wyświetlić listę uprawnień przyznanych dla konta, którego używasz do łączenia się z serwerem, możesz użyć dowolnej z następujących instrukcji:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

Począwszy od MySQL 5.0.24, jeśli POKAŻ DOTACJE DLA BIEŻĄCEGO_UŻYTKOWNIKA (lub dowolnej równoważnej składni) jest używany w kontekście DEFINERA, na przykład w procedurze przechowywanej zdefiniowanej za pomocą SQL DEFINER BEZPIECZEŃSTWA), wyświetlane granty są dla definicji i nie wywołujący.

POKAŻ DOTACJE wyświetla tylko uprawnienia przyznane jawnie dla wymienionego konta. Inne uprawnienia mogą być dostępne dla konta, ale nie są wyświetlane. Na przykład, jeśli istnieje konto anonimowe, wymienione konto może korzystać z jego uprawnień, ale POKAŻ GRANTY nie będzie ich wyświetlać.

POKAŻ DOTACJE wymaga uprawnienia SELECT do bazy danych mysql.

promienisty
źródło
SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya