sql >> Databáze >  >> RDS >> Mysql

Potřebujete také oprávnění k aktualizaci MYSQL?

Je to možné, ale váš problém je, že váš UPDATE-Query obsahuje klauzuli WHERE, která potřebuje pole dotazovat alespoň interně. Předpokládá se tedy, že zde potřebujete oprávnění SELECT.

V opačném případě byste se mohli pokusit použít techniky hrubé síly k získání skutečného obsahu tabulky pomocí UPDATE-Query a ověření, zda to ovlivnilo řádky.

Příklad:UPDATE customers SET some_irrellevant_field=1 WHERE user ='jimmy' AND sexual_orientation ='2'Jakmile budete mít ovlivněný počet řádků> 0, budete mít informace. Bylo by tedy možná příliš nebezpečné to dovolit.

Ale můžete explicitně udělit oprávnění pro jednotlivé sloupce. Řekněme, že chcete aktualizovat hash hesla uživatele s určitým id, udělíte výběrové oprávnění pro sloupec id uživateli databáze a aktualizujete oprávnění ke sloupci hash.

Dialog oprávnění pro konkrétní tabulku PHPMyAdmin (omlouvám se, některé části snímků obrazovky jsou v němčině):

Pak by to mělo fungovat dobře:UPDATE users SET hash='0123456789abcdef' WHERE id =1234

Alternativně, pokud by oprávnění na úrovni sloupců neměla být k dispozici ve vašem DBMS nebo úložišti, můžete stále použít samostatnou tabulku nebo databázi a připojit se k ní, když to bude potřeba.



  1. Občasná výjimka NullPointer v ResultSetImpl.checkColumnBounds nebo ResultSetImpl.getStringInternal

  2. Jak mohu optimalizovat databázi pro superstring dotazy?

  3. Vysvětlení rámce MySQL High Availability Framework – Část I:Úvod

  4. SQLSTATE[22007]:Neplatný formát data a času:1292 Nesprávná hodnota data a času:'2019-03-31 01:52:25'