Mysql
 sql >> Database >  >> RDS >> Mysql

L'autorizzazione per l'aggiornamento di MySQL deve selezionare anche l'autorizzazione?

È possibile, ma il tuo problema è che la tua query UPDATE contiene una clausola WHERE che deve interrogare i campi almeno internamente. Quindi è inteso che hai bisogno dell'autorizzazione SELECT qui.

Altrimenti, si potrebbe provare a utilizzare tecniche di forza bruta per ottenere il contenuto effettivo della tabella utilizzando una query UPDATE e controllando se ha interessato le righe.

Esempio:UPDATE clienti SET some_irrellevant_field=1 WHERE user ='jimmy' AND sex_orientation ='2'Non appena hai un conteggio delle righe interessate> 0, avresti le informazioni. Quindi sarebbe forse troppo pericoloso permetterlo.

Ma puoi dare esplicitamente autorizzazioni per singole colonne. Supponiamo che tu voglia aggiornare l'hash della password di un utente con un certo id, concedi all'utente del database l'autorizzazione select sulla colonna id e aggiorni l'autorizzazione alla colonna hash.

Finestra di dialogo di autorizzazione specifica per la tabella PHPMyAdmin (scusate, alcune parti degli screenshot sono in tedesco):

Allora dovrebbe funzionare bene:UPDATE users SET hash='0123456789abcdef' WHERE id =1234

In alternativa, se l'autorizzazione a livello di colonna non dovesse essere disponibile nel tuo DBMS o nel motore di archiviazione, puoi comunque utilizzare una tabella o un database separato e unirti a esso quando necessario.