Hallo,
um die Verbindung zu MySQL remote zu einem Server abzusichern benutze ich neben einer SSL-Verbindung zwei Benutzerkonten: Eins um lesende Zugriffe auf eine bestimmte Tabelle zu tätigen, einen um schreibende zu tätigen.
Im speziellen sieht es so aus, dass das Benutzerkonto mit dem Lesezugriff nur den SELECT-Befehl ausführen kann. Das Benutzerkonto mit der Schreibberechtigung darf nur INSERT, UPDATE und DELETE ausführen. Jetzt habe ich aber das Problem:
Beim Ausführen eines SQL-Befehls wie z.B. folgendem:
UPDATE tabelle SET row1=val1, row2=val2, ... WHERE rowX=valX
bekomme ich die Fehlermeldung, dass der Benutzer nicht genügend Rechte besitzt. Es fehlt ihm das Recht ein SELECT-Befehl auszuführen, was ja auch so von mir gewollt ist. Der einzige Grund, wofür ich hier ein SELECT sehe ist die WHERE-Klausel.
Kann mir einer sagen, ob ich das richtig verstehe? Oder habe ich da möglicherweise mit der Rechteverteilung falsch gemacht (was nach mehrmaligen hinsehen mir jedoch nicht aufegfallen ist).
Wenn tatsächlich für die WHERE-Klausel ein Recht zur Ausführung des SELECT-Befehls notwendig ist, so stellt sich mir die Frage, ob es ein gleichwärtigen Befehl (wie oben) gibt, welcher nicht das Recht zur Ausführung eines SELECT-Befehls benötigt.
Hoffe mir kann da einer helfen.
um die Verbindung zu MySQL remote zu einem Server abzusichern benutze ich neben einer SSL-Verbindung zwei Benutzerkonten: Eins um lesende Zugriffe auf eine bestimmte Tabelle zu tätigen, einen um schreibende zu tätigen.
Im speziellen sieht es so aus, dass das Benutzerkonto mit dem Lesezugriff nur den SELECT-Befehl ausführen kann. Das Benutzerkonto mit der Schreibberechtigung darf nur INSERT, UPDATE und DELETE ausführen. Jetzt habe ich aber das Problem:
Beim Ausführen eines SQL-Befehls wie z.B. folgendem:
UPDATE tabelle SET row1=val1, row2=val2, ... WHERE rowX=valX
bekomme ich die Fehlermeldung, dass der Benutzer nicht genügend Rechte besitzt. Es fehlt ihm das Recht ein SELECT-Befehl auszuführen, was ja auch so von mir gewollt ist. Der einzige Grund, wofür ich hier ein SELECT sehe ist die WHERE-Klausel.
Kann mir einer sagen, ob ich das richtig verstehe? Oder habe ich da möglicherweise mit der Rechteverteilung falsch gemacht (was nach mehrmaligen hinsehen mir jedoch nicht aufegfallen ist).
Wenn tatsächlich für die WHERE-Klausel ein Recht zur Ausführung des SELECT-Befehls notwendig ist, so stellt sich mir die Frage, ob es ein gleichwärtigen Befehl (wie oben) gibt, welcher nicht das Recht zur Ausführung eines SELECT-Befehls benötigt.
Hoffe mir kann da einer helfen.