/ / Come "sottrarre" i privilegi in MySQL - mysql, sql, privilegi

Come "sottrarre" i privilegi in MySQL - mysql, sql, privilegi

Voglio revocare i privielges di aggiornamento da 2 colonne della tabella "Transact". Voglio che l'utente abbia accesso a tutte le altre tabelle e dati.

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"

Quanto sopra non sembra funzionare.

risposte:

6 per risposta № 1

Sono d'accordo con Thilo: tu saresti in grado di farlorevocare quei privilegi di colonna se li avessi concessi prima. Non puoi concedere un livello più alto (ad esempio una tabella) e quindi revocarlo a un livello più dettagliato. Penso che questo sia descritto nel manuale di riferimento MySql MySql 5.1 capitolo 12.7.1.3:

"I privilegi per un database, tabella, colonna ola routine è formata additivamente come l'OR logico dei privilegi in ciascuno dei livelli di privilegio. Ad esempio, se un utente ha una SELEZIONE globale privilegio, il privilegio non può essere negato da un'assenza del privilegio a livello di database, tabella o colonna. "

Per ottenere i privilegi selettivi è già descritto da Devart.


1 per risposta № 2

Innanzitutto - rimuovi tutti i privilegi (su database, tabella, livelli di colonna).

  1. Concedere i privilegi UPDATE (... e altri) a OGNI tabella, tranne "Transact".
  2. Concedere il privilegio UPDATE ai campi specificati nella tabella "Transact".

0 per risposta № 3

Immagino che "ledger.transact" sia il tuo tavolo? Dovrebbe funzionare in questo modo:

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

guarda anche Qui per la revoca Sintassi utilizzata in mysql.