Welches Datenbanksystem

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
umsid
User
Beiträge: 9
Registriert: Sonntag 6. September 2015, 09:36

Hallo Leute,

ich bin neu hier, bin auch Neuling in Python und suche nach einer Datenbankanbindung.

Erst einmal stellt sich die Frage, welches Datenbanksystem verwendet werden soll.

Ich hätte folgende Vorstellungen:

1. Lauffähig unter Windows, Linux und Mac.
2. Mehrplatzfähig
3. Installation sollte sehr einfach gehen - am Besten direkt durch mein Python Programm beim ersten Aufruf.
4. Datenbank muss Passwort geschützt sein
5. Ein verschlüsseln der Daten in der Datenbank ist nicht so toll, denn mit Passwort soll man auch schnell mal mit einem Administrationsprogramm in die Datenbank reinschaun können.

Ich habe mir schon die Liste der bekannten Datenbankschnittstellen durchgesehen, kenne aber die einzelnen Datenbanken nicht so genau, dass ich wüsste, für welche Datenbank meine Anforderungen zutreffen.
Mein erster Gedanke war, eine Access Datenbank zu nehmen - die läuft aber nicht auf dem MAC.
Eine SQLITE kann man nicht Passwort schützen.
Wie das mit MYSQL ist, ohne es vorher groß zu installieren, weiß ich nicht.

Ich habe erst versucht, mein Projekt unter Java zu auszuführen, dort hatte ich eine Datenbank namens H2 gefunden.
Die hätte gepasst (Server konnte von der Software aus gestartet werden, Passwortschutz, SQL Syntax....) - aber die Java Geschichte ist mir doch etwas zu anstrengend. :-(

Kann mir jemand einen oder zwei Tipps geben, welche Datenbank ich nehmen könnte?

vg
Guenter
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Definiere bitte Passwortschutz.

Soll der Benutzer sich gegenüber der Datenbank authentifizieren?
Ist der Benutzer egal, und nur der Zugriff auf die Datenbank soll allgemein mit einem Passwort geschützt sein?
umsid
User
Beiträge: 9
Registriert: Sonntag 6. September 2015, 09:36

nein, der Benutzer bräuchte sich nicht authentifizieren.
Ich stelle mir das ehr so wie bei PHP und MySql vor, dass ich beim Öffnen der Datenbank username und passwort im Quellcode mit angeben muss.
Es geht mir nur darum, dass die Datenbank nicht "von außen" verändert wird.

Um näher darauf einzugehen:
Zum einen werden Daten gespeichert, die nicht mehr verändert werden sollen, zum anderen ist noch folgendes Problem:
Das, was ich programmieren will, gibt es schon mit einer sehr "schlechten" Softwarelösung.
Und wenn die Datenbank von außerhalb des Programms zu öffnen geht, dann wird es sehr bald jemanden geben, der eine Schnittstelle programmiert, um andere Daten in die Datenbank zu importieren und dann unser "hoffentlich besseres" Programm auch für seine Auswertungen nutzen wird.

Auch innerhalb der Datenbank werde ich hier noch ein paar Sachen einbaun - ich möchte aber trotzdem haben, dass die Datenbank nur mit der Software - und natürlich (wenn man user und passwort kennt) auch mit einem Verwaltungstool zu öffnen ist.

Hilft die Info weiter?
BlackJack

@umsid: Ich würde sagen PostgeSQL oder MySQL, wobei beide gegen Punkt 3 der Anforderungen verstossen dürften. Und jede Datenbank die nicht mit dem Passwort verwschlüsselt ist welches nur der Benutzer kennt, die aber auf dem gleichen Rechner liegt und wo der Benutzer Zugriff drauf hat, dürfte gegen Punkt 4 verstossen, es sei denn Du bekommst es mit der Rechteverwaltung des jeweiligen Betriebssystems hin das der Benutzer zwar mit dem Programm auf die Datenbank zugreifen darf, aber sonst keinerlei Zugriff erlangen kann. Ich denke dieser Zielkonflikt ist es auch der Punkt 3 nahezu unmöglich macht.

Egal welche SQL-Datenbank es wird (falls es eine SQL-Datenbank wird): Ich würde heute nicht mehr auf SQLAlchemy als Abstraktionschicht verzichten wollen. Egal ob man damit dann ”nur” Anfragen auf SQL-Niveau programmatisch erstellt oder das ORM benutzt.

Nach der Klarstellung mit dem Passwort: Dann darf der Benutzer die Datenbank nie in die Finger bekommen und auch Nutzername und Passwort im Programm hinterlegen ist sinnfrei weil man damit auch gleich einen Zugang ohne beides verwenden könnte wenn das alles auf einem Rechner liegt und unter dem Benutzer läuft. Wenn Du etwas (Daten/Programm) vor dem Benutzer schützen willst, dann darf der das nie in die Finger bekommen. In solchen Fällen bietet man das als Webdienst an.

Edit: Ich würde da eher versuchen die Schiene zu fahren damit Werbung zu machen das man Daten aus schlechteren Programmen in Dein Besseres importieren kann.
umsid
User
Beiträge: 9
Registriert: Sonntag 6. September 2015, 09:36

BlackJack hat geschrieben: Nach der Klarstellung mit dem Passwort: Dann darf der Benutzer die Datenbank nie in die Finger bekommen und auch Nutzername und Passwort im Programm hinterlegen ist sinnfrei weil man damit auch gleich einen Zugang ohne beides verwenden könnte wenn das alles auf einem Rechner liegt und unter dem Benutzer läuft. Wenn Du etwas (Daten/Programm) vor dem Benutzer schützen willst, dann darf der das nie in die Finger bekommen.
Das verstehe ich nicht so ganz. Beispiel: bei einer Access Datenbank, die Passwort geschützt ist, kann der Anwender doch auch mit dem "VBA Programm" auf die Daten zugreifen, nicht aber direkt über Access. Sicher gibt es viele Programme, die das Passwort entfernen, aber dann kann die Datenbank nicht mehr mit dem Programm verwendet werden - das würde mir ja reichen.
BlackJack hat geschrieben:Edit: Ich würde da eher versuchen die Schiene zu fahren damit Werbung zu machen das man Daten aus schlechteren Programmen in Dein Besseres importieren kann.
Das ist schon mein Ziel - ABER:
Es geht um folgendes:
Ich habe ein Anmeldesystem für bestimmte Veranstaltungen im Internet - von dem aus soll man die Daten für die Veranstaltung in das Programm importieren können.
es gibt zwei weitere Anmeldesysteme, die dann auch mein Programm verwenden würden - genau das möchte ich unterbinden.
Wenn jemand mein Programm verwendet, dann soll er seine Daten mit der Hand anlegen müssen - oder mein Anmeldesystem verwenden!

ich möchte nicht, dass jemand die Datenbank ohne mein Programm öffnen kann und seine Daten importieren kann um dann quasi mein Programm auch für seine online Anmeldung zu verwenden.
Genau das passiert jetzt mit dem "schlechten Auswerteprogramm" - jeder von den dreien - auch ich - spielen dem aktuellen Auswerteprogramm vor, ich hätte eine Datensicherung von ihm.
Und diese lesen alle dann über Restore in das Programm ein.

Ich will also nur vermeiden, dass jemand von den anderen Anmeldesystemen seine Daten in unser Programm importiert.

und zur Web Geschichte: Es ist nicht möglich, eine Onlinedatenbank zu verwenden - die Veranstaltungsorte haben oft keine Verbindung ins Internet.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

umsid hat geschrieben:Das verstehe ich nicht so ganz. Beispiel: bei einer Access Datenbank, die Passwort geschützt ist, kann der Anwender doch auch mit dem "VBA Programm" auf die Daten zugreifen, nicht aber direkt über Access. Sicher gibt es viele Programme, die das Passwort entfernen, aber dann kann die Datenbank nicht mehr mit dem Programm verwendet werden - das würde mir ja reichen.
Wenn die Daten für den Zugriff im Quellcode stehen, dann sind diese Informationen auslesbar. Du kannst Handstand machen und versuchen das zu verstecken. Wenn man ein bisschen suchen geht, findet man den Kram aber immer.
umsid hat geschrieben:ich möchte nicht, dass jemand die Datenbank ohne mein Programm öffnen kann und seine Daten importieren kann um dann quasi mein Programm auch für seine online Anmeldung zu verwenden.
Dann darf die Datenbank nicht bei dem Benutzer sein. Da wirst du keine andere Chance haben.
umsid hat geschrieben:Ich will also nur vermeiden, dass jemand von den anderen Anmeldesystemen seine Daten in unser Programm importiert.
Ich habe von gut unterrichteten Quellen gehört, dass es Leute gibt, die so etwas beruflich machen ;)
Also Datenbanken mit Fremddaten befüllen, oder aus fremden Datenbanken lesen. Das ist zwangsläufig Teil jeder Migration, wenn die Datenhaltung nicht gleich bleibt.
BlackJack

@umsid: Wenn die Zugangsdaten im VBA-Programm hinterlegt sind, dann kann man auch über Access auf die Datenbank zugreifen, denn dann bekommt man die Zugangsdaten ja aus dem VBA-Programm heraus. Und wenn der Benutzer die Zugangsdaten in Deinem Programm eingeben muss, dann kann er sie auch direkt der Datenbank gegenüber eingeben ohne Dein Programm. Oder allgemein: Wenn der Benutzer die Zugangsdaten in der Hand hat, direkt oder indirekt weil sie in einem Programm stehen das er besitzt, dann kannst Du nicht verhindern das er direkten Zugang zur Datenbank bekommt, insbesondere wenn die auch noch auf seinem Rechner läuft.

Und wenn es Möglichkeiten gibt das Passwort bei der Datenbank zu entfernen, dann sollte man es auch wieder hinzufügen können nachdem man Daten geändert hat.

Das was Du willst ist IMHO nicht möglich. Du kannst versuchen das zu erschweren, aber wenn es jemand darauf anlegt, also wenn Dein Programm gut und nützlich ist, dann wird es jemanden geben der die Hürden umgehen wird. Wenn Programm und Daten beim Anwender auf dem Rechner liegen, dann kann der damit letztendlich machen was er will ohne das man das wirklich verhindern kann. Dagegen hilft nur ihm keinen direkten Zugriff auf beides zu geben, eben als Webdienst beispielsweise.
Antworten