Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL-Update-Berechtigung muss auch die Berechtigung auswählen?

Es ist möglich, aber Ihr Problem ist, dass Ihre UPDATE-Abfrage eine WHERE-Klausel enthält, die die Felder zumindest intern abfragen muss. Es ist also beabsichtigt, dass Sie hier die SELECT-Berechtigung benötigen.

Andernfalls könnte man versuchen, Brute-Force-Techniken zu verwenden, um den tatsächlichen Inhalt der Tabelle zu erhalten, indem man eine UPDATE-Abfrage verwendet und prüft, ob es betroffene Zeilen gibt.

Beispiel:UPDATE Kunden SET some_irrellevant_field=1 WHERE user ='jimmy' AND sexual_orientation ='2'Sobald Sie eine Anzahl betroffener Zeilen> 0 haben, hätten Sie die Information. Es wäre also möglicherweise zu gefährlich, das zuzulassen.

Sie können jedoch Berechtigungen für einzelne Spalten explizit erteilen. Angenommen, Sie möchten den Passwort-Hash eines Benutzers mit einer bestimmten ID aktualisieren, Sie geben dem Datenbankbenutzer die Select-Berechtigung für die ID-Spalte und die Aktualisierungsberechtigung für die Hash-Spalte.

PHPMyAdmin tabellenspezifischer Berechtigungsdialog (sorry, einige Teile der Screenshots sind auf deutsch):

Dann sollte das funktionieren:UPDATE users SET hash='0123456789abcdef' WHERE id =1234

Alternativ können Sie, wenn die Berechtigung auf Spaltenebene in Ihrem DBMS oder Ihrer Speicher-Engine nicht verfügbar sein sollte, trotzdem eine separate Tabelle oder Datenbank verwenden und ihr bei Bedarf beitreten.