MySQL über Webserver

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

MySQL über Webserver

Beitrag von theo »

Ich bin mal am Optionen vorsortieren. Bin nicht gerade ein Lazarus Datenbank Guru.

Ich muss eventuell mit einem entfernten MySQL Server arbeiten.
Das müsste ja eigentlich gehen mit Zeos oder MySQLConnection über die HostName Einstellung, stimmt das?

Nun meine eigentliche Frage: Mal angenommen der MySQL Port (68schlagmichtot) ist durch eine Firewall geblockt.
Welche Möglichkeiten habe ich, unter der Voraussetzung das dort nur der Webserver:80 mit PHP erreichbar sind?

Ich hab mal gesucht und ein PHP Script gefunden, was SQL-Queries entgegenimmt und XML Daten zurückliefert.
Das funzt soweit, ist aber natürlich nicht das Gelbe vom Ei, weil man alles manuell machen muss.
Es gibt wohl keine TMySQLXMLWebConnection oder sowas, damit man die Data Controls oder TSQLQuery etc. verwenden könnte, stimmt's?

Fällt euch zu dem Thema etwas besseres ein?
Wäre es wohl schwierig, einen solchen "Treiber" selber zu schreiben?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: MySQL über Webserver

Beitrag von af0815 »

Was genau darfst du am Fremden DB-Server ? Nur PHP oder auch mehr ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: MySQL über Webserver

Beitrag von theo »

af0815 hat geschrieben:Was genau darfst du am Fremden DB-Server ? Nur PHP oder auch mehr ?
Naja, das Ziel ist, ein Tool zu basteln, welches im Prinzip "überall" läuft. Webserver/PHP/ MySQL sind vorausgesetzt.
Mehr idealerweise nicht.
Was wäre denn dein "mehr"?

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: MySQL über Webserver

Beitrag von DiBo33 »

Ich muss eventuell mit einem entfernten MySQL Server arbeiten.
Das müsste ja eigentlich gehen mit Zeos oder MySQLConnection über die HostName Einstellung, stimmt das?
Sofern der MySQL-Server ein Zugriff von extern zulässt, ja.
Nun meine eigentliche Frage: Mal angenommen der MySQL Port (68schlagmichtot) ist durch eine Firewall geblockt.
Standard-Port ist 3306.
Welche Möglichkeiten habe ich, unter der Voraussetzung das dort nur der Webserver:80 mit PHP erreichbar sind?
Im Prinzip, keine.
Ich hab mal gesucht und ein PHP Script gefunden, was SQL-Queries entgegenimmt und XML Daten zurückliefert.
Das funzt soweit, ist aber natürlich nicht das Gelbe vom Ei, weil man alles manuell machen muss.
Viel anderes kannst du aber nicht machen, du musst also ein PHP-Script haben welches die Querys entgegen nimmt und ausführt und dir die Daten als Rohform übergibt.
Das kann csv, xml oder sonstiges sein was du dann entsprechend in der Applikation weiter verarbeiten musst.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: MySQL über Webserver

Beitrag von monta »

Wenn es überall laufen soll, kommst du über den PHP-Umweg nicht herum. Quasi auf jedem Server ist der direkte DB-Zugriff außerhalb von localhost geblockt. Die Bedingung für "mehr" wäre den DB-Zugriff für externe zu aktivieren. Das ist aber aus Sicherheitsgründen nicht wirklich gerne gesehen.

Eventuell hilft dir aber das folgende weiter, dein Vorhaben eines Treibers wurde da schon sehr ähnlich durchgeführt, ich habe es aber noch nie getestet:
http://www.delphipraxis.net/148076-mysq ... l-dll.html" onclick="window.open(this.href);return false;
Johannes

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: MySQL über Webserver

Beitrag von theo »

monta hat geschrieben:Wenn es überall laufen soll, kommst du über den PHP-Umweg nicht herum. Quasi auf jedem Server ist der direkte DB-Zugriff außerhalb von localhost geblockt. Die Bedingung für "mehr" wäre den DB-Zugriff für externe zu aktivieren. Das ist aber aus Sicherheitsgründen nicht wirklich gerne gesehen.

Eventuell hilft dir aber das folgende weiter, dein Vorhaben eines Treibers wurde da schon sehr ähnlich durchgeführt, ich habe es aber noch nie getestet:
http://www.delphipraxis.net/148076-mysq ... l-dll.html" onclick="window.open(this.href);return false;
Ja, das Projekt auf Delphipraxis wäre genau das. Was mich da aber zurückhält: Windows-only und kein Quellcode zur DLL.

Danke für alle Antworten!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: MySQL über Webserver

Beitrag von af0815 »

theo hat geschrieben:Naja, das Ziel ist, ein Tool zu basteln, welches im Prinzip "überall" läuft. Webserver/PHP/ MySQL sind vorausgesetzt.
Mehr idealerweise nicht.
Was wäre denn dein "mehr"?
Das 'mehr' wäre CGI. Wenn man es durchdenkt, so wäre eine Dataset-Komponente als Wrapper für den PHP unterstüzten Zugriff schon leichter durchzubringen. PHP ist leichter verfügbar als eine CGI zugelassen zu bekommen.

Wenn es für PHP und ASP.net geht dann hat man eigentlich (fast) alle Welten offen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: MySQL über Webserver

Beitrag von Hitman »

Muss nichtmal CGI sein. Man könnte auch in PHP einen Webservice aufsetzen - das wäre genaugenommen sogar Datenbankunabhängig.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: MySQL über Webserver

Beitrag von mschnell »

theo hat geschrieben:Nun meine eigentliche Frage: Mal angenommen der MySQL Port (68schlagmichtot) ist durch eine Firewall geblockt.
Welche Möglichkeiten habe ich, unter der Voraussetzung das dort nur der Webserver:80 mit PHP erreichbar sind?
Muss doch nicht unbedingt PHP sein (obwohl PHP möglicherweise dafür tatsächlich praktisch ist). Du kannst auch in mit Lazarus ein CGI-Programm machen, das lokal auf dem Server eine Verbindung zur Datenbank aufbaut und nach außen über den Webserver mit dem entfernten Client kommuniziert. Dafür gibt es eine ganze Menge freie Tools.

Wenn Du Geld ausgeben willst/kannst, könnte vielleicht DataAbstract von RemObjects hilfreich sein.

-Michael

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: MySQL über Webserver

Beitrag von af0815 »

mschnell hat geschrieben:Muss doch nicht unbedingt PHP sein (obwohl PHP möglicherweise dafür tatsächlich praktisch ist). Du kannst auch in mit Lazarus ein CGI-Programm machen, das lokal auf dem Server eine Verbindung zur Datenbank aufbaut und nach außen über den Webserver mit dem entfernten Client kommuniziert. Dafür gibt es eine ganze Menge freie Tools.
Wenn es auf PHP zugreifen/zusammenarbeiten kann, so hat das seinen Vorteil, das PHP ganz einfach fast überall verfügbar ist. Bei CGI gibt es da oft schon Probleme mit den Vorgaben/Richtlinien von Firmen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: MySQL über Webserver

Beitrag von theo »

af0815 hat geschrieben: Wenn es auf PHP zugreifen/zusammenarbeiten kann, so hat das seinen Vorteil, das PHP ganz einfach fast überall verfügbar ist. Bei CGI gibt es da oft schon Probleme mit den Vorgaben/Richtlinien von Firmen.
Ja. Nur darum geht's. PHP läuft "immer", alles andere wie Ports öffnen, CGI, etc. wird schon schwieriger.
Man könnte auch mit SSH tunneln, das muss aber auch eingerichtet werden.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: MySQL über Webserver

Beitrag von af0815 »

theo hat geschrieben:Man könnte auch mit SSH tunneln, das muss aber auch eingerichtet werden.
Steht bei uns zB. auf der 'Roten Liste' = Forbidden, genauso wie Ports öffnen. Es geht nur über PHP oder .net und Webserver.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: MySQL über Webserver

Beitrag von mschnell »

af0815 hat geschrieben:, das PHP ganz einfach fast überall verfügbar ist. Bei CGI, etc. wird schon schwieriger.
Wenn ich mich nicht irre:

PHP ist immer CGI (Der PHP Interpreter wird als CGI-Programm vom Webserver aufgerufen und führt dann das PHP-Script aus).

Prinzipiell kann ein CGI-Programm in jeder Programmiersprache erstellt werden.

Wenn der Webserver auf einer Linux-Maschine läuft (das ist wohl in den meisten Fällen so), kann auch jedes Script automatisch seinen passenden Interpreter starten wenn es mit einer Zeile #!<interpreter-executable> beginnt(Die Script Datei muss dann das Executable-Flag gesetzt haben)

#!/bin/bash
echo hallo

Ist ein CGI-Programm, das fast überall laufen sollte.

-Michael

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: MySQL über Webserver

Beitrag von theo »

@mschnell: Es geht nicht um Technik, sonder nur um die Praxis.
Viele Provider lassen beliebige Executables (CGI), SSH und Firewall öffnen nicht zu.
Darum geht's. Ausserdem sehe ich den Vorteil von CGI nicht. Das ist auch nur ein Prozess der nach Abarbeitung des Requests verschwindet. Die Datenbankverbindung lässt sich so auch nicht halten.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: MySQL über Webserver

Beitrag von Hitman »

theo hat geschrieben:Ausserdem sehe ich den Vorteil von CGI nicht. Das ist auch nur ein Prozess der nach Abarbeitung des Requests verschwindet. Die Datenbankverbindung lässt sich so auch nicht halten.
Mit FastCGI schon ... die Prozesse bleiben nämlich laufen.

Antworten