/ / Jak "odjąć" uprawnienia w MySQL - mysql, sql, privileges

Jak "odjąć" uprawnienia w MySQL - mysql, sql, privileges

Chcę odwołać aktualizacje privie z 2 kolumn tabeli "transakcja". Chcę, aby użytkownik miał dostęp do wszystkich innych tabel i danych.

mysql> REVOKE UPDATE (system, consumer) ON ledger.transact FROM "foo"@"localhost";
ERROR 1147 (42000): There is no such grant defined for user "foo" on host "localhost" on table "transaction"

Powyższe wydaje się nie działać.

Odpowiedzi:

6 dla odpowiedzi № 1

Zgadzam się z Thilo - mógłbyś tylkoodwołać te uprawnienia do kolumn, jeśli wcześniej je przyznałeś. Nie można przyznać na wyższym poziomie (np. Tabela), a następnie odwołać na bardziej szczegółowym poziomie. Myślę, że jest to opisane w podręczniku użytkownika MySQL 5.1 rozdział 12.7.1.3:

"Uprawnienia do bazy danych, tabeli, kolumny lubrutyna się tworzy dodatkowo jako logiczne OR uprawnień w każdym z nich poziomy przywilejów. Na przykład, jeśli użytkownik ma globalne WYBIERANIE przywileju, przywileju nie można odmówić przez brak przywilej na poziomie bazy danych, tabeli lub kolumny. "

Aby uzyskać selektywne przywileje jest już opisany przez Devarta.


1 dla odpowiedzi nr 2

Po pierwsze - usuń wszystkie uprawnienia (w bazie danych, tabeli, poziomach kolumn).

  1. Przyznaj uprawnienia UPDATE (... i inne) do KAŻDEJ tabeli, z wyjątkiem "transakcji".
  2. Nadaj uprawnienie UPDATE do określonych pól w tabeli "transakcja".

0 dla odpowiedzi № 3

Domyślam się, że "ledger.transact" to twój stół? Powinno to działać w następujący sposób:

REVOKE UPDATE ON ledger.transact FROM "foo"@"localhost";

patrz również tutaj dla odwołania Składnia używana w mysql.