naja das programm kommuniziert halt dann mit einem server, den du natürlich noch programmieren musst. der server dann mit der datenbank. ich weiß ja nicht, wie professionell das programm werden soll aber das ist imho der normale weg für sowas.
eine gute Idee, aber das ist doch auch nur ein Umweg?! Letztendlich könnte man die Kommunikation zwischen diesen beiden Programmen aus dem eigentlichen Programm auslesen, ein neues Programm schreiben und damit wieder die DB manipulieren, wenn auch nicht direkt.
Du sollst nicht im Programm eine Benutzerverwaltung ein bauen ... im Programm reicht ein Login-Maske
wenn Du eine Benutzer hast der nur Lesen darf, dann legst Du nur einen Benutzer mit SELECT-Rechten an ... einer der ändern darf, der bekommt noch UPDATE, INSERT & DELETE ... jede vernüftige DB kann die Rechte sogar auf die Spalten verteilen ... außerdem kannst Du noch VIEWs anlegen und dort entsprechend Rechte verteilen ... genau für solche Spielchen gibt es die Benutzerverwaltung in den DBs
Nachtrag: die Benutzerdaten kannst Du natürlich einfach weiter reichen
Nachtrag2: ist ist übrigens sinnvoll eine Nutzer nur mit INSERT-Rechten zur eigene Log-Table anzulegen ... den kannst Du dann nutzen um die Aktionen der Benutzer zu loggen ... die Zugangsdaten kannst Du (mehr oder weniger) im Quelltext hinterlegen ... Daten kann der Benutzer ja nicht löschen - nur schreiben
Dennoch habe ich eine Login-Maske mit Benutzerdaten.
Wie gesagt, am liebsten hätte ich auch eine Lösung, wo sich die Benutzer mit Benutzerdaten, die in der DB hinterlegt sind, anmelden. Sicherheit, Logging, Änderungsverfolgung usw. wären damit gegeben. Das Problem ist, dass das Programm auf Computern in einem Betrieb läuft, auf dem einige Leute rumspielen. Das Programm bietet dem Nutzer eine Eingabemaske mit Feldern, die immer wieder mal geändert werden, eben von diesen Leuten. Das bedeutet, der DB-Account, mit dem das Programm auf die DB zugreift, muss mindestens die Rechte für Inserts und Updates haben. Damit können zwar keine Einträge gelöscht, dafür aber geleert bzw. mit Unsinnsinformationen befüllt werden.
Ein Idee, die mir grade gekommen ist, sind Stored Procedures. Sehr wahrscheinlich werde ich eine MySQL-DB bekommen. Ist es möglich, dass ausschließlich zugewiesene Procedures von einem speziellen Benutzer ausgeführt werden? Damit könnte ich doch verhindern, dass nur Einträge der letzten 24h geändert werden können?!
Edit: noch etwas genauer: der Benutzer darf NUR Procedures ausführen, keine weiteren Aktionen wie z.B. Update. Dabei muss noch bedacht werden, dass die Procedures u.a. Updates enthalten.
Edit 2: sollte ich vielleicht hier im DB-Forum noch mal fragen oder gilt das dann als Cross-Posting?