sql >> Databasteknik >  >> RDS >> Mysql

MYSQL-uppdateringsbehörighet måste du också välja behörighet?

Det är möjligt men ditt problem är att din UPDATE-Query innehåller en WHERE-klausul som måste fråga fälten åtminstone internt. Så det är meningen att du behöver SELECT-tillstånd här.

Annars kan man försöka använda brute force-tekniker för att få fram det faktiska innehållet i tabellen genom att använda en UPDATE-Query och kontrollera om den har påverkat rader.

Exempel:UPPDATERA kunder SET some_irrellevant_field=1 WHERE user ='jimmy' AND sexual_orientation ='2'Så fort du har ett antal berörda rader> 0, skulle du ha informationen. Så det skulle möjligen vara för farligt att tillåta det.

Men du kan uttryckligen ge behörigheter för enstaka kolumner. Låt oss säga att du vill uppdatera lösenords-hash för en användare med ett visst id, du ger vald behörighet på id-kolumnen till databasanvändaren och uppdaterar behörighet till hash-kolumn.

PHPMyAdmin tabellspecifik behörighetsdialogruta (förlåt, vissa delar av skärmdumparna är på tyska):

Då borde detta fungera bra:UPPDATERA användare SET hash='0123456789abcdef' WHERE id =1234

Alternativt, om behörighet på kolumnnivå inte skulle vara tillgänglig i din DBMS eller lagringsmotor kan du fortfarande använda en separat tabell eller databas och gå med i den när det behövs.



  1. Vill du reservera mySQL auto-inkrementerade ID?

  2. Anropa en medlem funktion result() med CodeIgniter

  3. Fel vid användning förutom i en fråga

  4. Andra generationens Google Cloud SQL - App Engine