Archiv verlassen und diese Seite im Standarddesign anzeigen : Wettbewerb: MySQL<->FTP/HTTP<->MySQL
Hi folks,
für eine Provider-Lösung verwalte ich mit PHPMyAdmin 2.2.0 serverseitig meine MySQL-Datenbank und ich musste bisher manuell Daten einpflegen.
Möchte aber einen ständigen Abgleich von Daten meiner Entwicklungsmaschine und der Provider-DB (beide MySQL) über erschlüsselte Formen gewährleisten.
Ich denke, das ist ein Thema, dass hier viele Interessenten in der einen oder anderen Form anspricht - Datenexport übers Web (HTTP/FTP):
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Deshalb prämiere ich den besten Vorschlag, Link, Code, Verfahrensweise, Script, Programm, Zeitschriftsartikel, Beitrag oder was auch immer, mit 250,-DM oder 125.- EURO.
Der letzte Beitrag, der innovativ, ernstzunehmen und konstruktiv ist, wird mit 50,- DM bzw. 25,- EURO prämiert.
Dabei spielen OS, Webserver, Programmierspachen, Verschlüsselungsalgorithmen etc. keine Rolle - z.B. eine schöne Lösung mit NT,IIS, ASP, SSL und XML. Interessant dürfte dabei besonders die client-seitige Aufarbeitung sein.
Die Lösung sollte für spätere Nutzer download sein.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Jeder Teilnehmer benötigt eine gültige Email-Verbindung und muß angeben (ab fünften Beitrag), wer bisher seiner Meinung nach den zweitbesten konstuktiven Beitrag erstellt hat. Der Wettbewerb endet am 31.12.2001 um 0:00.
Ich werde am 15.1.2001 die Gewinner küren, nachdem ich auch ein paar Vorschläge testen konnte und die Preise überweisen.
Feedback und Diskussionen sind hier natürlich willkommen.
Also viel Erfolg!!!
Forumsbetreiber:
Sollte dieser Beitrag nicht in euerem Interesse sein oder sollte es technische Bedenken geben, teilt Diese mir per Mail mit und löscht den Beitrag!
_______________________________________________________
Konfuzius sagen: " Mensch stolpeln über Kieselsteine,
nicht übel Belge! "
[Editiert von Blaster am 06-12-2001 um 16:39]
Philosophischer Monolog in einen Diskussionsforum - Paradox!
Erst einmal verwundet es mich, dass ich Beiträge nur per Email bekomme, statt Sie hier zu lesen.
Ich habe wenigesten ein Einzeiler erwartet a´la: Schau mal unter ..
Die erste Frage, die sich die meisten stellen werden, ist: Was habe ich davon? Ich verspreche, dass ich nicht vorhabe hier irgend jemanden auszunutzen. Ich kann nur in einen Disskussionsforum keinen großkotzigen Andeutungen machen und garantiere deshalb nur die drei Blatt.
Das Geld überweise ich auch sofort im Voraus zu Treuhänden, wenn gewünscht. Meine Motivation dabei ist es Material zu sammeln, Kontakte zu knüpfen und meinen Horizont zu erweitern.
Und wenn alle dabei etwas haben - um so besser.
Meine Vision:
=============================================
Du bekommst per Email oder auf Diskette einen Schlüssel, mit den man sich auf einer irgendwo im LAN, hier Proxy und Mauer, instalierten MySQL-DBMS von einem Webserver eine MySQl-DB clonen kannst, ohne Name der DB, Anzahl und Namen der Tabellen, sowie Anzahl und Namen der Felder etc. zu kennen. Über die verschlüsselte Verbindung soll auch umgekehrt Daten wieder auf Webserver gelangen.
Viele sagen sich:
Klar - Auslagern als Meta-Datei, ebenso das Auflutschen, Verschlüssel mit SSL, Identfikation über Cookies - easy! Und ich in der Tat die Anfrage erhalten, wo ich da Probeme sehe, dass ich Lösungen mit Geld prämiere.
Stellen wir uns mal vor, es kommt noch ein zweiter Client hinzu und denn der Datenabgleich erfolgt nur über Initialisierung der Clients.
Die Initialisierung müßte idealerweise automatisiert über Application oder andere Workstation sein. Wie ließe sich das System abgleichen?! Oder wir haben zwei Dienstanbieter, mit verteilten Anwendungen. Wie kann man als Client switchen?! Das ginge schon in den Bereich clustering.
Die Profies unter euch kennen vielleicht den Einsatz von Oracle 9i mit XML oder MS-SQL-Server, ASP und XML. Für solche Zwecke suche ich eine etwas kostengünstigere und naja, für "Standard"-Admin, verwaltbare Lösung. Bei solchen Ansatzen spielt das Thema Hochverfügbarkeit und Redundanz eine Rolle. Außerdem haben wir die Daten im LAN statt im WAN. Ideal für weniger sensibele Daten wie Lagerbestände, Preislisten und Produktbeschreibungen.
Auch konstruktive Kritik ist bei mir erwünscht. Im jedem Fall danke ich für eure Ideen!
_________________________
"Manchmal kann ein Mensch durch eine neue Sichtweise mehr gewinnen,
als durch 1000 weitere IQ-Punkte!"
[Editiert von Blaster am 11-12-2001 um 20:55]
Da ich mir nun nicht sicher bin, ob ich das richtig verstanden habe, versuche ich das ganze jetzt noch einmal in eigene Worte zu fassen.
Ausgangslage ist ein Netzwerk mit einer variablen Anzahl von Servern und Clients, die Daten eines MySQL-DBMS austauschen möchten.
Befugt zu diesem Austausch sollen nur bestimmte Clients sein, die einen Zugangsschlüssel erhalten. Das Interface selbst ist webbasiert, das System soll mit Verschlüsselung arbeiten. Weiterhin muss ein "Master"-Script als Koordinationspunkt existieren, damit keine Interferenzen auftreten.
Meine Fragen: Wie stellst du dir diesen Austausch vor? Warum ist die DB vorher zu clonen (man könnte ja einfach die Daten des Server verändern)?
Hi Sky,
Der Client besitzt nach der Installation 0 Daten. Beispiel aus RL:
Transportgesellschat 22 Filialen a 110 Mitarbeiter arbeitet (1999) zentral an Oracle, um sämtlichen Trafik zu managen. In Spitzenzeiten dauerte jeder Quest 5 min!!
Gemäß meiner "Vision" wird aktueller Datenbestand auf LAN-DB geclont, dannach wird, wie du bereits sagtes, patial (definiert wie auch immer) Datenabgleich vorgenomen, vollständiges Clonen natürlich nicht mehr effektiv. D.h.: "Serialisierungssequenz" ist abhängig von erfolgten Schreibänderungen. Man muß ausbalancieren Serialisierungssequenz gegen Trafik um optimalen Laufzeitbetrachung und Transfervolumen zu erhalten.
Gut, dann läuft ja eigentlich alles nur auf ein Script hinaus, welches bei Clientanfragen den Schlüssel überprüft, die gesamte Verbindung verschlüsselt und die DB-Queries in eine Warteschlange stellt, die nach Eintreffen der Anfragen geordnet ist...
Erst-Instanzlich schon. Mir ist jetzt im Moment aber noch nicht klar welche DB-Query du in den Orbit schicken willst.
Server, Client oder beide?! Wie willst du die Warteschlange (engl. query) temporär aktiv halten?
Mit Warteschlange meinte ich 'queue'.
Da du geschrieben hast, dass du das ganze bisher per phpMyAdmin machst, nehme ich an, dass es prinzipiell nur um Queries geht.
Vereinfachtes Modell:
Client ---[Verschlüsselung]---> (PHP-)Script ---[lokal]---> (mySQL)-Server
Wobei das Script die eingehenden Queries nach Eingangszeit ordnet und in exakt dieser Reihenfolge an den Server schickt. Wie bereits dargestellt sollten Script und Server dabei auf dem gleichen Rechner sein, damit man sich hier die Verschlüsselung sparen kann.
Beispiel: Client möchte eine UPDATE-Query ausführen. Dazu startet der Benutzer das Script im Browser, gibt die Query und seinen Schlüssel ein und schickt sie ab. Die Query geht beim Scripthandler ein, der sie mit einer Nummer und/oder der aktuellen Zeit (am besten mit Mikrosekunden) versieht. Ist die Query als nächste in der Queue an der Reihe, wird sie gesendet.
[Editiert von Sky am 10-12-2001 um 18:06]
Also die Verschlüsselung können wir hier wohl als erledigt betrachten. Auch Sky´s Idee, mit PHP die Query mit Zeitindex zu versehen und dann den Client(C)-MySQL über Handle-Nr an Server(S)-DB zu versenden, gefiel mir. Um aber weiter zu kommen, könnte man vielleicht fünf Fallstudien betrachten. Ich habe mir erlaubt durch Fragen ein paar Schwierigkeiten aufzuzeigen, die ich dabei sehe:
Lösungen mit PHP und HTTP
==========================================================
Fall A: Scriptspr. PHP , 1 C-MySQl-DB, 1 S-MySQL-DB, 1 Lan-User
1) Wie clont(spiegelt) man die Datenbank bei der Installation, ohne dessen Form zu kennen? Wie sehen die Scripte aus?
S-MySQL-->S-PHP-->Web-->C-PHP-->C-MySQL
Hier wären CODE-Fragmente nicht schlecht.
Fall B: Scriptspr. PHP , 1 C-MySQl-DB, 1 S-MySQL-DB, X LAN -User
2) Wenn jeder Änderung der C-MySQL-DB über PHP-Script erfolgt, um die Änderungsquery zu erfassen, schränkt das die Einsatzfähigkeit der C-DB ein. Man stelle sich z.B. eine Access-DB vor, die an MySQl verknüpft ist. Wie erfasst man Änderung der C-MySQL-DB ohne das ein PHP-Script zwischen geschaltet ist, um daraus Queries zu bilden?
3) Der Zugangsschlüssel wird bei mehreren User in C-DB gespeichert. Aber wie initialisiert man den Abgleich übers Web?
Fall C: Scriptspr. PHP, 2 C-MySQL-DB, 1 S-MySQL-DB, x Lan-User
4) Wenn Client I einen Abgleich mit S-DB vorgenommen hat, wie und wann erfährt Client II davon?
5) Obwohl MySQL multithreading-fähig ist,haben wir bei den Datenabgleich zweier Clients ein Web-Delay. Wie fängt das S-PHP-Script opponierende Schreib/Lesezugriffe auf?
Auch hier wäre ein Code-Fragment toll.
Fall D: Scriptspr. PHP, 2 C-MySQl-DB, 2 S-MySQl-DB, X Lan-User
6)Wenn bei Server I Tabellenmenge A die auch redundant zur Server II Tabellenmenge B sein kann, einen Datenabgleich vornimmt, muß der Client switchen. Wie synchonisiert man den am besten den Datenabgleich?
7)Wäre ein Datenabgleich zwischen den Servern sinnvoll? Wie initialisiert man ihn? Und vor allem wie managed man ihn?
Ein Code-Fragment wäre klasse.
Fall E: Scriptspr. PHP?!, n C-MySQL-DB, m S-MySQl-DB, x LAN-User - Jetzt wird es spannend! Die virtuelle BackBone!
8)Bei vielen Clients spielt vor allem die Synchonisation der Quests eine Rolle. Greifen zu viele Client auf ein und den selben Server zu -> Crash! Fängt man die weitere Kasade dann auch nicht ab - MultiCrash!! Man kann es vergleichen mit der Staubildung auf der Autobahn. Halten die Quest den Sicherheitsabstand nicht ein, dann kommt es bei einen unerwarten Bremsmanoverer (großen Datenabgleichen) zum Stopp- und Go-Verkehr und schließlich zu Stillstand - Bumm!
Wie löst man am besten dieses Problem? Wie fragte schon JoelH - "Gib es die Weltformel?!"
Wie bereits gesagt Links, Artikel, Code-Frakmente alles ist hier willkommen. Ihr habt ein völlig neuen Ansatz - her damit.
!!!!Es gibt eventuell Geld für gute Tipps!!!!
[Editiert von Blaster am 12-12-2001 um 12:12]
Hm, ne ganze Menge... Hab schon einige Ansätze und auch Codekonzepte, aber die poste ich erst morgen, weil ich heute nen 12 Stunden Tag hinter mir habe...
So, ich hab mich nun etwas eingehender mit deinen Problemstellungen beschäftigt und ein paar Lösungsansätze aufgestellt. Mit Code-Fragmenten ist es hier allerdings nicht getan, das geht schon über den Einsatzbereich des Wortes 'Fragment' hinaus ;) Wenn, dann würde ich das gesamte Controllerscript sowieso in einem Aufwasch machen, Flickwerk ist nicht so toll und auch schwieriger zu planen und zu koordinieren.
Fall A: Scriptspr. PHP , 1 C-MySQl-DB, 1 S-MySQL-DB, 1 Lan-User
1) Wie clont(spiegelt) man die Datenbank bei der Installation, ohne dessen Form zu kennen? Wie sehen die Scripte aus?
S-MySQL-->S-PHP-->Web-->C-PHP-->C-MySQL
Das Modell (wenn man auf meinen bisherigen Ausführungen aufbaut) ist anders:
Holen und Speichern: C-Browser-->S-PHP(=Web)-->S-MySQL
Auf Client-DB übertragen: C-Browser-->S-PHP(Web)-->C-MySQL
Die Form kann man recht einfach z.B. über die SHOW-Funktionen herausfinden (vgl. PhpMyAdmin Dumpfunktion!).
Fall B: Scriptspr. PHP , 1 C-MySQl-DB, 1 S-MySQL-DB, X LAN -User
2) Wenn jeder Änderung der C-MySQL-DB über PHP-Script erfolgt, um die Änderungsquery zu erfassen, schränkt das die Einsatzfähigkeit der C-DB ein. Man stelle sich z.B. eine Access-DB vor, die an MySQl verknüpft ist. Wie erfasst man Änderung der C-MySQL-DB ohne das ein PHP-Script zwischen geschaltet ist, um daraus Queries zu bilden?
Das hab ich nicht ganz verstanden...
3) Der Zugangsschlüssel wird bei mehreren User in C-DB gespeichert. Aber wie initialisiert man den Abgleich übers Web?
Das auch nicht...
Fall C: Scriptspr. PHP, 2 C-MySQL-DB, 1 S-MySQL-DB, x Lan-User
4) Wenn Client I einen Abgleich mit S-DB vorgenommen hat, wie und wann erfährt Client II davon?
Das kann man in einer Log-Table oder einer Text-Datei speichern, und dem User dann auf entsprechende Anfrage (Link, Button mit Popup) oder automatisch (kleines Frame mit regelmäßigem Refresh, das über den Status informiert) mitteilen.
5) Obwohl MySQL multithreading-fähig ist,haben wir bei den Datenabgleich zweier Clients ein Web-Delay. Wie fängt das S-PHP-Script opponierende Schreib/Lesezugriffe auf?
Auch hier wäre ein Code-Fragment toll.
mySQL handelt meines Wissens nach dem FIFO-Prinzip, also kann man diese Sache dem DB-Server überlassen - das Script muss die Queries nur in der richtigen Reihenfolge absenden (eben die bereits erwähnte Queue). Aber ich werde mich noch nach API-/SQL-BuiltIn-Funktionen umsehen, mit denen man das noch genauer kontrollieren kann (abgesehen von ping, das hier u.U. auch ein grober Anhaltspunkt sein kann).
Fall D: Scriptspr. PHP, 2 C-MySQl-DB, 2 S-MySQl-DB, X Lan-User
6)Wenn bei Server I Tabellenmenge A die auch redundant zur Server II Tabellenmenge B sein kann, einen Datenabgleich vornimmt, muß der Client switchen. Wie synchonisiert man den am besten den Datenabgleich?
Ich denke das geht nur mit einem extra-Timestamp-Feld in jeder Table, in das das Datum der Änderung eingetragen wurde - schließlich hat man sonst überhaupt keinen Anhaltspunkt, wann eine Row das letzte Mal geändert wurde.
7)Wäre ein Datenabgleich zwischen den Servern sinnvoll? Wie initialisiert man ihn? Und vor allem wie managed man ihn?
Ein Code-Fragment wäre klasse.
Das wäre sicherlich sinnvoll, wenn du redundant arbeiten möchtest. Ein direktes S-DB<-->S-DB ist hier allerdings keine Option, das muss wieder mit einem Controller gelöst werden.
Fall E: Scriptspr. PHP?!, n C-MySQL-DB, m S-MySQl-DB, x LAN-User - Jetzt wird es spannend! Die virtuelle BackBone!
8)Bei vielen Clients spielt vor allem die Synchonisation der Quests eine Rolle. Greifen zu viele Client auf ein und den selben Server zu -> Crash! [...]
Hierfür müsste man dann eben Begrenzungen in Bezug auf die Anzahl der Clients (auch hier vielleicht Queues!) festlegen bzw. wie du bereits sagtest einen fixen (zeitlichen) Sicherheitsabstand bei Queries, der aber auch flexibel nach übertragener Datenmenge berechnet werden kann.
Regards,
Sky
[Editiert von Sky am 12-12-2001 um 19:34]
@Sky:
Erläuterungen:
Fall B,Problemstellung 2:
--------------------------------------------------
z.B. Überlegung
Änderung: User-->Appl-->z.B.Access-->C-MySql
Wie bildet man Änderungen:
1) Query_id1, Timestamp1, tabelle1, feldname1
2) Query_id2, Timestamp2, tabelle2, feldname2
ohne das zwischen Access und C-MySQL PHP-Script Daten-Transfer erledigt. Sonst müßte ich zu Beispiel Access an C-PHP anbinden - schränkt Möglichkeiten ein und stellt Ansprüche. Wie werden die Änderungen erfasst, oder gespeichert, um bei
---------------------------------------------------
Problemstellung 3:
Änderungen, wie vorgeschlagen, mit C-PHP (du meinst S_PHP)auf S-MySQl zu versenden. Du müsstest sonst,wie in Fall A, ein User haben, der Browser aufruft, um ständig Daten abgleicht.
Autoabgleich, vielleicht in konstanten Zeitintervall, wäre optimal, wenn Fall E betrachtet wird.
Ziel: C-MySql + S-MySQL in const Intervall immer Uptodate. Unabhäng, wer, wann, was über LAN daran ändert und was wir noch daran hängen.
[Editiert von Blaster am 13-12-2001 um 13:39]
Hm, okay nun verstehe ich es, glaube ich... Ich kenne mich nicht sonderlich gut mit Access aus, aber ich denke, dass zum Datenaustausch zwischen mySQL und Access auf jeden Fall ein Handler zwischengeschaltet werden muss - wie hier eben ein PHP-Script.
Das ganze LAN ist uninterssant. Access ist nur Beispiel.Ich müßte nur wissen, wo man (du) wie welche Daten brauch(s)t. Um angestrebte Lösung umsetzen zu können.
Deine anderen Vorschläge hören sich ganz interessant an, jetzt brauche ich ein bischen Zeit, um weiters anzukucken.
Thx 4 inspiration!
_________________________________________________________
:D Der Nachteil bei jeden guten Dinner ist die Verdauung..."
So, ich habe mich ein wenig schlau gemacht:
Fall B - zu 2:
Die simpelste Methode, die Änderungen der C-MySQl-DB aus dem LAN zu erfassen, ist die Einrichtung und Bearbeitung einer Änderungstabelle in C-MySQL-DB (@Sky zu 4) über die angebunden Programmarchitektur. Um bei unseren Access-Beispiel zu bleiben, wäre ein VBA-Modul leicht einzurichten, die über äquivalentes "onChange-Event" den Eintrag initiert.Leicht ist auch eine Verarbeitung z.B. über WSH (windows scripting host) mit dem man über MS-win Ebene Einträge vornehmen. Über die MySQl-COM-API ist auch eine rudimentäre Steuerung der C-MySQL-DB möglich, aber das würde hier zu weit führen... Unter von UNIX abgeleitet Systemen, wie z.B. Linux, bietet sich eine Initalisierung über Shell-Ebene an, da scheint es endlose Möglichkeiten zu geben...
Die Anbindungen von kommerzielle Applicationen, wie z.B. SAP/R3, scheinen DBMS wie MySQL nicht problemlos anzubinden zu sein. (Klar: Freeware<>Profit!)
Die zusätzliche DB-Tabelle müßte den Form THREAD_ID, TIME_STAMP, DB_NAME, TAB_NAME, FIELDNAME, CHANGE_MOD(Upd-Ins-Del) haben. Und das Transaktionsscript mit Opertoren wie 'all' oder [von-bis] arbeiten können.
Fall B - zu 3:
Die Initialisierung scheint leichter als ich dachte - Z.B.:
- Mit der win32API mit C++: WinExec("íexplore.exe http://www.xxx.de", SW_SHOW); könnte man den Browser mit gewünschten URL einfach starten und den C-DB-Rechner über REMOTE-ACCESSS ansteuern.
- Oder wieder auf OS-Ebene mit WSH,MTS,DTC... unter Ms-win.
- Oder SSH unter UNIX.
- Oder einfach mit OS-Scholar
Fall D(6,7),Fall C(4) und Fall E (8):
Ich bin zu der Überzeugung gelangt, dass es eine gute Lösung sein könnte, wenn man eine globale Hierachie-Zuweisung der C-Db´s, die auf allen S-DB gespeichert würde, einrichtet - vergleichbar einer Benutzerverwaltung im OS.
Dies hätte mehrere Vorteile:
- C (high) kann über S-I C(low) verständigen, in einer anderen Fequenz oder Sequenz(S-II,S-III dann erst S-I) S_DB´s anzusteuern.
- Oppunierende R/W-Zugriffe werden über die Client-Priorität abgewickelt.
- Mit einen TimeStamp könnte ein C(high),z.B. QM, Eintragungen löschen, wenn C(Low), z.B. Produkt, Mist gebaut hat.
- Unter den selben Gesichtspunkten könnte man auch redudanten Datenabgleich der Server vornehmen.
Fall C(4):
Die Idee mit den Refresh-Frame hat mir besonders gefallen.
So könnte man unternehmensspezifischen Daten, wie Verkauf, Produktionsfortschritt und Transfer, leicht auswertbar fürs LAN erfassen.
Fall A(1):
Trotz all der großartigen Aussichten, habe ich ein Problem noch nicht "verstanden". Wie bekommen wir den Mist in den Gaul?:
Auf Client-DB übertragen: C-Browser-->S-PHP(Web)-->C-MySQL
Die Form kann man recht einfach z.B. über die SHOW-Funktionen herausfinden (vgl. PhpMyAdmin Dumpfunktion!).
Ich fürchte für diese Technik habe ich wohl den Max-DAU unterschritten.
@Sky: Könntest mir das nocheinmal erklären?!
-----------------------------------------------------------
Diese B2B-Gesamtlösung hat folgende Vorteile:
1) Sie ist providerfreundlich.
2) Billig.
3) Leicht umsetzbar.
4) Beliebig erweiterbar.
5) Arbeitet nicht mit XML (was etwa heute Standard ist).
6) Leicht zu administrieren.
Also, stellt man sich die begründete Frage:
WO IST DER HACKEN ???
---------------------------------------------------------
[Editiert von Blaster am 19-12-2001 um 14:43]
Original geschrieben von Blaster
@Sky: Könntest mir das nocheinmal erklären?!
Grobe Skizze:
SHOW DATABASES
- SHOW TABLES
Dann mit SHOW CREATE TABLE für jede Table die Struktur übertragen, und als letztes mit SHOW COLUMNS und SELECT für jede Table die Daten auslesen und mit INSERT in die Ziel-DB eintragen.
Und nun bin ich mit ner doofen Frage dran - Was meinst mit '2B2'? :)
[Editiert von Sky am 19-12-2001 um 14:46]
schmalle 19-12-2001, 14:36 business to business
<?php
if($sky == "unwissend")
{ echo "$grins"; }
?>
<html>
:D
</html>
2B2 hat er geschrieben, hab mich nur vertippt...
Wer lesen kann ist klar im Vorteil, nicht wahr? :rolleyes:
@Schmolle:
Sky wollte mich auf eine Tippfehler hinweisen...
:D
lol... Diese Abkürzung verursacht nur Chaos...
schmalle 19-12-2001, 14:52 heija, ich versinke in demut :D
ich werde das forum jetzt für immer verlassen, und mich aus dem fenster stüzen :D
Original geschrieben von Blaster
Fall B - zu 3: [...]
Ich schlage ganz generell Shellskripts, Perl, PHP, Python, C oder sonstwas unter Unix-Derivaten vor, und zwar textkonsolenbasiert.
@Sky:Fall A(1)
Auf die Gefahr hin mich lächerlich zu machen...
Aber, wie willst du mit einen S-PHP in C-Browser ein Zugriffsberechtigung auf C-MySQL erhalten?!
:confused:
[Editiert von Blaster am 19-12-2001 um 15:36]
Die simpelste Methode, die Änderungen der C-MySQl-DB aus dem LAN zu erfassen, ist die Einrichtung und Bearbeitung einer Änderungstabelle in C-MySQL-DB (@Sky zu 4) über die angebunden Programmarchitektur.
Das halte ich auch für eine gute Lösung.
Original geschrieben von Blaster
Auf die Gefahr hin mich lächerlich zu machen...
Aber,wie willst du mit einen S-PHP in C-Browser ein Zugriffsberechtigung auf C-MySQL erhalten?!:confused:
Eintrag '%' in der 'hosts'-GRANT-Table beim C-DB, damit von jedem Rechner (oder auch nur vom Server, falls dieser eine statische IP hat) aus zugegriffen werden kann; Client-IP bekommt man über REMOTE_HOST, Port sollte Standard sein (3306).
Jetzt ist der Post wieder da... :rolleyes:
Original geschrieben von Blaster
WO IST DER HACKEN ???
Nun ja.. Also providerfreundlich, billig, beliebig erweiterbar und leicht zu administrieren ist sie sicherlich ; und mit XML arbeitet sie auch nicht (könnte man aber an bestimmten Stellen als Feature mit einbauen).
Aber 'leicht umsetzbar'? Also das ist nicht gerade wenig Code - mal ganz abgesehen von der ganzen Testerei...
Auf der anderen Seite muss man natürlich sagen, dass das bei einem Projekt dieser Größe ein Aufwand ist, den man eigentlich nicht vermeiden kann. Relativ gesehen ist sie also 'leicht umsetzbar'.
Ich glaube, jetzt verstehe ich warum XML bevorzugt wird...
Also, im Praxistest ist es mir nicht gelungen Zugriff auf C-DB zu erhalten. Könnte es daran liegen, dass ich hinter dem Proxy sitze?! Wenn ja, wie vermittele ich dem Script, dass ein Proxy dar ist und der C-DB eine C-Netz-Adresse hat?
Wenn nein, was mache ich falsch! Muß ich eine S-GRANT-TABLE irgendwie include´n?!Ich fürchte hier fehlen irgendwie ein paar Parametereinstellungen...
Frohes Fest Allen!
Blaster
NC: 27.12.01
Original geschrieben von Sky
Eintrag '%' in der 'hosts'-GRANT-Table beim C-DB, [...]
Gemacht?
@Sky:
Einstellungen der GRANT-Tabelle (weitere Einstellungen existieren, sind natürlich vertraulich...)
Host Benutzer Password Rechte
% Jeder Nein Keine Rechte
% root Nein Select Insert Update Delete Create Drop Reload Shutdown Process File Grant References Index Alter
localhost Jeder Nein Select Insert Update Delete Create Drop Reload Shutdown Process File Grant References Index Alter
webhost: http://www.url.de:3306 - dbXXXXXXX(User_ID)
C-Db: localhost(127.0.0.1)- Port(n. eingestellt) -DB(Admin_ID)
C-IP(C-Netz): 192.168.0.3, Proxy(C):192.168.0.2,
Firewall auf Proxy.
Hm, also ich kann nur sagen, dass es bei mir einwandfrei geht... Allerdings hab ich auch keine zwischengeschalteten Proxies oder Firewalls. Am Proxy wird's aber nicht liegen, also tippe ich mal auf Firewalleinstellungen (Incoming Connections auf 3306 erlaubt?).
Ansonsten hast du vielleicht doch etwas falsch eingestellt - ich weiß nicht, inwieweit du mit diesen Sachen vertraut bist.. Ich empfehle dir mal, um sicher zu gehen, folgenden Artikel: http://www.devshed.com/Server_Side/MySQL/Access
:( Nerv,...
ever error:
MySQL meldet: Cannot connect: invalid settings.
Ziech Permutationen versucht!
GRANT TABLE
$cfgServers[1]['host'] = 'db.url.de';
$cfgServers[1]['port'] = '';
$cfgServers[1]['socket'] = '';
$cfgServers[1]['connect_type'] = 'tcp';
$cfgServers[1]['adv_auth'] = FALSE;
$cfgServers[1]['stduser'] = '';
$cfgServers[1]['stdpass'] = '';
$cfgServers[1]['user'] = 'xxxxxxxxxx';
$cfgServers[1]['password'] = 'xxxxxxxxxxxxxxxx';
$cfgServers[2]['only_db'] = 'dbxxxxxxxxxx';
$cfgServers[1]['verbose'] = '';
$cfgServers[1]['bookmarkdb'] = '';
$cfgServers[1]['bookmarktable'] = '';
$cfgServers[2]['host'] = '%';
$cfgServers[2]['port'] = ''('3306');
$cfgServers[2]['socket'] = '';
$cfgServers[2]['connect_type'] = 'tcp';
$cfgServers[2]['adv_auth'] = FALSE;
$cfgServers[2]['stduser'] = '';
$cfgServers[2]['stdpass'] = '';
$cfgServers[2]['user'] = '';
$cfgServers[2]['password'] = '';
$cfgServers[2]['only_db'] = 'test';
$cfgServers[2]['verbose'] = '';
$cfgServers[2]['bookmarkdb'] = '';
$cfgServers[2]['bookmarktable'] = '';
Firewall disable.
Link brachte mich auch nicht weiter,weil keine neuen Info.
Proxy:Jana2 TCP-Gateway Port 3306, Servername 'db.url.de', Server-Port 3306, sowie versuch Servername 192.168.0.3 (c-DB)
ISP meint DB-Exchange über GRANT TABLE möglich.
Weiß jemand woran es liegen könnte, dass es nicht funzt?
Thx 4 help
MySQL meldet: Cannot connect: invalid settings.
Na das kann ja so nicht stimmen *g*
mySQL kann ja nicht wissen, ob ein Client zu ihm connecten konnte oder nicht...
Schon mal standardmäßig per PHP (selbstgecodet) oder C über die API nen Versuch probiert?
S-PHPMyAdmin schießt auf C-DB. GRANT TABLE auf WS kopiert mit Zugriffsrechten für C-DB. Ziel: S-PHP-Programmierung auf C-DB.
Falsch?!
mySQL kann ja nicht wissen, ob ein Client zu ihm connecten konnte oder nicht...
Schon mal standardmäßig per PHP (selbstgecodet) oder C über die API nen Versuch probiert?
:confused: Verstehe ich nicht? Ziel ist doch von C-Browser in C-DB oder?!
Klar, das ist das Endziel... Aber du musst das ja erstmal verbindungsmäßig hinbekommen. Also würde ich vorschlagen, dass du einfach mal ein einfaches Script/Programm schreibst (auf phpMyAdmin würd ich mich im Zweifelsfall nicht verlassen).
D.h. also das das DB_Conneting-Script, das die Verbindung zu meinen localhost herstellt nur im Webserver gestartet werden muß?!
Warning: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) in /homepages/x/dxxxxxxxx/htdocs/Test_Trans/DB_Connection.php on line 16
Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) in /homepages/x/dxxxxxxxxx/htdocs/Test_Trans/DB_Connection.php on line 16
War nix!
http://www.c-plusplus.de/bashcomp.gif
Jawohl, habe endlich jemanden gefunden der Ahnung hat! Meine anfängliche Verwunderung war wohl nicht unbegründet, bin wohl neben Sky in Laufe der Zeit immer kleinlauter geworden. Ich hätte hier noch wochenlang weiterpfuschen können - ohne Effekt.
Also! - Hinter dem Proxy ist es für WS unmöglich die C-DB anzusteuern. Ein C-Netz-IP ist natürlich keine global gültige IP die der Host ansteuern kann. Er braucht eine echte IP im WAN. Die hat ein normaler Client aber nicht hat. Er findet aber eine temporäre sogenannte Klasse-4-IP im... Proxy?!?- Nee, falsch!(C-Netz)... im der Übertragsverbindung z.B. ISDN-Karte. Da heißt - ich treffe die C-DB nur, wenn Sie auf (neben) dem Proxy sich befindet. Das ist natürlich sicherheitstechnisch äußerst zweifelhaft und deshalb auch nur als temporäre Lösung geeignet.
@Sky: Und deshalb hattest du keine Schwierigkeiten bei der Übertragung...
Die Klasse-4-IP meisten eine 227.-.-.- wird von dem ISP/(der Telefongesellschaft) gestellt, der/(die) den direkten Verbindungsaufbau auf die Backbone herstellt und ist vollkommen variabel. D.h. Ich muß die MySQL-host-IP mit $REMOTE_HOST zum Verbindungsaufbau immer neu erstellen. Ergo, gibt es für das Erstellen von Dump-Files z.B. über SSH keine echte Alternative. Der Vorzug von Datenabgleich über XML ist hier auch ersichtlich, der nur Format, Verschüsselung, Authentifikation etc. als Anspruch kennt.
So, wenn jemand noch eine Idee hat wie wir über den Proxy kommen oder so, kann er hier kund tun. Ich werde hier nicht mehr eingreifen und melde mich erst wieder am 3.1.2002 .
Wenn die Beteidigung weiter so anhält, kann ich sofort den(die) Sieger küren und überweisen.
In jeden Fall wünsche ich Allen einen guten Rutsch in neue Jahr!
Endlich Ruhe vor mir...
:D:D:D:D:D:D:D:D:D Blaster
Original geschrieben von Blaster
D.h. Ich muß die MySQL-host-IP mit $REMOTE_HOST zum Verbindungsaufbau immer neu erstellen. Ergo, gibt es für das Erstellen von Dump-Files z.B. über SSH keine echte Alternative.[/B]
Es war ja auch so gedacht, dass das Controllerscript $REMOTE_ADDR ausliest und entsprechend flexibel connectet - phpMyAdmin bleibt bei meiner Lösung völlig außen vor.
So! Etwas später als angekündigt, da ich ein Sterbefall in der Familie hat und mir ein paar Tage frei genommen habe.
Also - wie zu erwarten:
----------------------------------------------------------
The Winner ist Sky!!! 125,- EUR wurden überwiesen.
Der letzte konstruktive Beitrag (der nicht von mir stammte) geht auch an Sky!!! Weitere 25,- EUR wurden überwiesen.
(Schmolles Beitrag '2B2/B2B' fand nicht besonders konstruktiv.
----------------------------------------------------------
Bilanz des Wettbewerbs:
Naja, ich habe mir etwas mehr davon versprochen...
Von den Profies habe ich zwar nur eine Bemerkung erwartet, wie schau mal unter url ...
Von den Amateuren mehr unkonventionelle Ansätze, wie z.B. RAS-Ansätze.
Sky, mein einziger Spielkamerad, war irgendwie weder das Eine noch das Andere. Durch seine Einsatz wurden mir die Augen geöffnet, warum XML-Standards sich wohl durchsetzen werden. Er hat mich so vor Schaden bewart, denn ich hätte ansonsten bestimmt schon einen Kunden zu der einen oder anderen vergleichbaren Lösung mit GRANT-Tabellen geraten.
Auch was die Wertungen mögliche Backend-Anbindungen zwischen PHP, ASP, PERL, JSP und C# angeht, habe ich mehr Klarheit was Aufwand und Möglichkeiten angeht.So gesehen waren also die 150,- EUR kein Verlust.:D
Bis dann!
Blaster
schmalle 07-01-2002, 11:17 ich heisse schmAlle ... ein bisschen mehr respekt vor dem alter bitte :D
|
-
- |