PHP und MS-Access im Netz

Hallo zusammen,

ich soll mittels PHP-Weboberfläche, die auf einem Linux-Webserver läuft, auf eine MS-Access Datenbank zugreifen, die auf einem
entfernten Windows-Rechner liegt!
Die MS-Access Datenbank wird ständig aktualisiert, deswegen kann ich diese Datenbank nicht einfach in eine MySQL-Datenbank
umwandeln und diese dann auf den Linux-Server importieren.
(der Zugriff MUSS also von dem Linux-Server auf den Windows-Rechner gehen!)

Jetzt weiss ich aber nicht genau, wie man das am besten bewerkstelligt.
Habe von einem MyODBC Treiber gelesen, mit dem MS-Access auch MySQL verstehen soll. Muss auf dem Windows-Rechner dann
auch ein My-SQL-Server laufen, damit man auf die DB zugreifen kann oder ist das komplett der falsche Weg? :smile:

Vielleicht hatte schonmal jemand ein ähnliches Problem oder weiss, wie man besten und vielleicht auch kostengünstigsten lösen kann.

Gruss,
Jahan.

Hallo Jahan,

bin zwar kein Spezialist für MySQL, aber der Weg wäre schon wohl der richtige. Ich würde die Access-MDB aufteilen in Front- und Backend und das Backend dann (vorausgesetzt die Sache mit dem MySQL-ODBC-Treiber stimmt) dann auf MySQL umstellen. Diese DB wird dann unter einem zentralen MySQL-Server betrieben und der Webserver greift dann auf die DB parallel zu den Access-Clients zu (wobei Access dann nur noch das Frontend ist).

Wenn es mit dem MySQL-ODBC-Treiber nicht geht, könnte man alternativ auch MS-SQL einsetzen (ist aber nicht ganz billig und natürlich böse MS-Software). Das funktioniert gut mit Access Frontends, zumal es auch einen eigenen Assistenten zur Migration des Backends einer Access-MDB gibt.

In beiden Fällen würde ich mir aber mal verschärfte Gedanken um die Sicherheit machen. Wenn der Webserver öffentlich zugänglich sein soll, sollte man eine DMZ aufbauen, die den Webserver aufnimmt, und diesen mit einer ganz eng eingestellten Firewall vom DB-Server trennt. Falls es irgend möglich ist, würde ich sogar ganz auf einen Zugriff des Webservers auf die produktive Version der DB verzichten, und lieber hin und wieder eine Replikation der produktiven internen DB auf den webserver fahren.

Gruß vom Wiz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Wiz,

ich bin mir zwar noch nicht ganz sicher, wie das mit den front- und backend funktionieren soll, aber danke mal im Vorraus für deine Antwort.
Dasm mit den ODBC Treibern sollte soweit gehen, dass Access mysql versteht.
Der Webserver soll öffentlich zugänglich sein, soll aber aus der Datebank nur auslesen, also sicherheitstechnisch sollte das dann mit sessions kein Problem sein, vor allem, weil nur spezielle Kunden auf diese zugreifen sollen.
Die Frage ist nur noch, ob ich zusätzlich auf dem windows-rechner nen SQL-Server oder Mysql-Server laufen haben muss oder ob Access das von sich aus schon kann?

ps: ich hasse WIN :smile:

Grüsse,
Jahan.

Hallo Jahan,

bin zwar kein Spezialist für MySQL, aber der Weg wäre schon
wohl der richtige. Ich würde die Access-MDB aufteilen in
Front- und Backend und das Backend dann (vorausgesetzt die
Sache mit dem MySQL-ODBC-Treiber stimmt) dann auf MySQL
umstellen. Diese DB wird dann unter einem zentralen
MySQL-Server betrieben und der Webserver greift dann auf die
DB parallel zu den Access-Clients zu (wobei Access dann nur
noch das Frontend ist).

Wenn es mit dem MySQL-ODBC-Treiber nicht geht, könnte man
alternativ auch MS-SQL einsetzen (ist aber nicht ganz billig
und natürlich böse MS-Software). Das funktioniert gut mit
Access Frontends, zumal es auch einen eigenen Assistenten zur
Migration des Backends einer Access-MDB gibt.

In beiden Fällen würde ich mir aber mal verschärfte Gedanken
um die Sicherheit machen. Wenn der Webserver öffentlich
zugänglich sein soll, sollte man eine DMZ aufbauen, die den
Webserver aufnimmt, und diesen mit einer ganz eng
eingestellten Firewall vom DB-Server trennt. Falls es irgend
möglich ist, würde ich sogar ganz auf einen Zugriff des
Webservers auf die produktive Version der DB verzichten, und
lieber hin und wieder eine Replikation der produktiven
internen DB auf den webserver fahren.

Gruß vom Wiz

Hallo Jahan,

Also die Sache mit der Aufteilung Frontend / Backend ist so zu verstehen: Wenn ich unter Access ein Projekt anlege, also Tabellen, Formulare, Berichte, … anlege und darüber dann evtl. auch noch eine eigene Oberfläche mit Menüs und Dialogboxen, etc. lege, dann landet dies alles in einer MDB-Datei. Will ich mit mehreren Nutzern gleichzeitig mit dieser MDB arbeiten, muss sie auf einem gemeinsam zugreifbaren Server liegen. Die Datenbewegungen finden dann auf File-Ebene statt, was höchst unsicher und langsam ist. Die Access DB Operationen sind berüchtigt! Weiterer Nachteil eines solchen Verfahrens ist, dass Änderungen nur an der „lebenden“ Datenbank vorgenommen werden können. Auch dann, wenn diese nur die Oberfläche betreffen. Dies ist höchst gefährlich und auch ungünstig.

Daher trennt man üblicherweise Front- und Backend in zwei eigene MDB-Dateien auf. Das Backend enthält nur die Tabellen, während das Frontend die Berichte, Formulare, etc. enthält. Man kann diese MDB dann beliebig austauschen, wenn Änderungen nötig sind, ohne die Daten in den Tabellen anzufassen. Ein weiterer hier interessanter Vorteil liegt darin, dass Access über ODBC zudem in der Lage ist, als Backend nicht nur MDB-Dateien zu verwenden, sondern auch auf SQL-Servern aufzusetzen. Und hier kommt Dein MySQL- oder aber auch ein MS-SQL-Server ins Spiel. Man konvertiert das Backend (also die Tabellen) auf einen zentralen gemeinsam genutzen SQL-Server, und behält das vertraute Access-Frontend für die Mitarbeiter, die gewöhnt sind damit zu arbeiten. Gleichzeitig kann sich als Client an diesem Server jetzt aber auch der Webserver über z.B. PHP anmelden (Sicherheit!!!). Du bräuchtest also (Sicherheit bei Seite) nur einen einzigen zentralen SQL-Server, der dann für Access-Frontends wie auch für den Webserver über PHP erreichbar wäre. Die Anwender merken, außer durch die vermutlich bessere Performance, nicht von der Änderung. Sie behalten die vertraute Oberfläche. Nur greift die eben nicht mehr auf Dateiebene auf eine MDB-Datei zu, sondern kommuniziert jetzt als echte Client-/Server Anwendung mit dem SQL-Server.

Soweit die Theorie. In der Praxis ist so eine Umstellung natürlich nicht von jetzt auf gleich machbar, da natürlich die Programmierung des Frontends dann auch in Richtung Client-/Server und MySQL-Server zugeschnitten und optimiert werden muss.

Gruß vom Wiz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ahso…jetzt verstehe ich langsam was du meinst :smile:

Hab mich mal weiter umgehört und rausgefunden, dass ich mit PHP einfach per ODBC-Schnittstelle auf die MS-Access DB zugreifen kann.
Aber trotzdem danke für deine Ausführungen!!

Gruss, jahan.