martenk
Goto Top

ODBC Verbindung zu MYSQL funktioniert beim Einrichten nicht

Guten Tag,

versuche gerade von meinem PC eine ODBC Testverbindung zu meinem Server (bei 1und1) aufzubauen

habe dazu mysql connector runtergeladen und installiert
dann wollte ich bei ODBC Datenquellen einen neuen connnector einrichten

wenn ich dort den Server von 1und1 eintrage port 3306 denUsername der DB und das Passwort der DB bekomme ich die Meldung

connection failed HY000 Driver UNKNWON Mysql server host ....


Lieben Gruss
Marten

Content-Key: 463870

Url: https://administrator.de/contentid/463870

Printed on: April 19, 2024 at 08:04 o'clock

Member: godlie
godlie Jun 19, 2019 at 10:00:27 (UTC)
Goto Top
Hallo,

es düfte sein das dein Benutzer nicht die Berechtigung ( GRANT ) hat von extern zuzugreifen, bzw. kann es auch sein das der Server nur auf dem localhost lauscht oder gar nur einen Socket bereitstellt.

grüse
Member: manuel-r
manuel-r Jun 19, 2019 at 10:45:09 (UTC)
Goto Top
wenn ich dort den Server von 1und1 eintrage port 3306 denUsername der DB und das Passwort der DB bekomme ich die Meldung
connection failed HY000 Driver UNKNWON Mysql server host

Im Normalfall sind MySQL-Instanzen bei Hostern so konfiguriert, dass ausschließlich der zugehörige Webserver darauf zugreifen darf. Verbindungsversuche aus dem restlichen Internet werden geblockt.
Du wirst also schauen müssen ob 1&1 entsprechende Möglichkeiten anbietet MySQL auch von sonstwo her verbinden zu können. Den Server für die ganze Welt zu öffnen halte ich aber für keine gute Idee. Zumindest solltest du es so einrichten, dass er nur von deiner (festen) IP erreichbar ist oder am besten dir eine Möglichkeit schaffen dich per VPN zum Server zu verbinden.
Alles andere wäre Fahrlässig.

Manuel
Member: martenk
martenk Jun 19, 2019 at 11:03:46 (UTC)
Goto Top
also dann nur per php script tabelle übertragen zu 1und1 in die Mysql Tabelle?

könnt ihr mir dabei helfen
Member: godlie
godlie Jun 19, 2019 updated at 11:30:00 (UTC)
Goto Top
Gibt es diese Frage auch in einem verständlichen Satz?
Member: martenk
martenk Jun 19, 2019 at 11:41:04 (UTC)
Goto Top
Ich versuche es einmal - dann bleibt mir nur noch die Möglichkeit aus Access eine Tabelle zu generieren und diese dann entweder per ftp auf meinen webbereich zu kopiern und dann per php script einzufügen oder in phpmyadmin bei 1und1 eine csv Datei zu importieren
Member: godlie
godlie Jun 19, 2019 at 12:22:50 (UTC)
Goto Top
Nachdem du ja einen phpmyadmin hast, solltest du mit dem SQL Befehl
SHOW GRANTS;
erstmail einsehen können, welcher Benutzer welche Rechte hat.

Evtl. reicht es im phpmyadmin einen neuen Benutzer zu erstellen, der als Hostname ein % beinhaltet, um von Extern Zugriff zu erhalten.
Member: manuel-r
manuel-r Jun 19, 2019 at 12:31:34 (UTC)
Goto Top
Evtl. reicht es im phpmyadmin einen neuen Benutzer zu erstellen, der als Hostname ein % beinhaltet, um von Extern Zugriff zu erhalten.

Die Hoffnung stirbt zuletzt...
Ich traue Hostern viel zu, aber bei einem der großen - 1&1 gehört da definitiv dazu - ist mit Sicherheit nicht per Default MySQL für das gesamte Internet offen.
Member: martenk
martenk Jun 19, 2019 at 13:01:16 (UTC)
Goto Top
habe mit 1und1 telefoniert - die sagten, dass das nur möglich ist, wenn man einen eigenen Server hat

damit ist das Thema wohl durch

habt ihr vielleicht noch eine andere Idee, wie ich aus Access eine Tabelle in meine Mysql Tab bekomme - am liebsten aus Access heraus
Member: godlie
godlie Jun 19, 2019 at 13:13:35 (UTC)
Goto Top
Also wenn es sich um nur eine Tabelle ohne Relationen handelt, dann geht das recht gut über CSV Export und im Import CSV im phpymadmin
Member: martenk
martenk Jun 19, 2019 at 13:14:34 (UTC)
Goto Top
... bin ich bei Dir - nur die, die an der Datenbank arbeiten, für die wird es vermutlich zu komplex
Member: martenk
martenk Jun 19, 2019 at 13:16:19 (UTC)
Goto Top
bringt euch das irgendetwas

Grants for o101554@%
GRANT USAGE ON *.* TO 'o101554'@'%'
GRANT ALL PRIVILEGES ON `dbs101554`.* TO 'o101554'@'%'
Member: manuel-r
manuel-r Jun 19, 2019 at 13:20:09 (UTC)
Goto Top
Was soll das bringen?
Wenn der Hoster den Zugriff zu MySQL nur von seinem Netz oder von (d)einem Host aus zulässt und alles andere von außen blockt kannst du auf der DB anstellen was du willst - es wird nicht funktionieren.
Member: martenk
martenk Jun 19, 2019 at 13:21:16 (UTC)
Goto Top
okay - danke

habt ihr vielleicht noch eine andere Idee als mit CSV

Lieben Gruß
Member: manuel-r
manuel-r Jun 19, 2019 at 13:51:29 (UTC)
Goto Top
habt ihr vielleicht noch eine andere Idee als mit CSV

Vielleicht erklärst du zuerst mal, was mit den Daten in den beiden DBn überhaupt passieren soll und was der Hintergrund ist.
Ganz entscheidend ist m.E. die Frage, ob du deine Daten nur einmal in diese DB bringen musst, weil die sich danach nicht mehr ändern nur noch lesend darauf zugegriffen wird oder ob permanent Änderungen an den Daten in der Access-DB stattfinden die dann irgendwie zur MySQL-DB übertragen werden müssen.
Member: martenk
martenk Jun 19, 2019 updated at 14:12:45 (UTC)
Goto Top
es sind Belegungsdaten, die sich am Tag häufig ändern - ohne Relationen waere die Tabelle bei mysql
Member: manuel-r
manuel-r Jun 19, 2019 at 14:15:25 (UTC)
Goto Top
Lass dir doch nicht alles extra aus der Nase ziehen...

Ich vermute jetzt mal, die Daten die im Büro in der Access-DB bearbeitet werden sollen sofort oder ohne großen Zeitversatz in der MySQL-DB vorhanden sein, damit sie von dort aus über irgendwelche Scripte als Kalender oder what ever per Webseite angezeigt werden können. Richtig?

Und da ich jetzt keine Lust mehr auf "Rate mal mit Rosenthal" habe: Schildere bitte komplett was du vor hast und was das Ziel sein soll, oder ich bin raus.
Member: martenk
martenk Jun 19, 2019 at 14:19:31 (UTC)
Goto Top
Es sind Belegungsdaten, die sich am Tag häufig ändern - ohne Relationen - klasse waere nach Änderung der Belegungsdaten in der Access DB dass dann die Daten zu der mysql tab kommen
Member: manuel-r
manuel-r Jun 19, 2019 at 14:22:13 (UTC)
Goto Top
Ich bin raus.
Member: martenk
martenk Jun 19, 2019 at 14:30:28 (UTC)
Goto Top
ich weiss nicht, wie ich es anders beschreiben soll - vielleicht so

wir geben in Access Belegungsdaten von Häusern ein - nach der Eingabe sollen die Belegungsdaten in eine Mysql Belegungstabelle geschrieben werden damit sie auf unserer Website sichtbar sind
Member: manuel-r
manuel-r Jun 19, 2019 at 14:46:40 (UTC)
Goto Top
Besser als nichts.
Damit ist ja schon mal klar, dass der Webserver per PHP nur die Belegungsdaten aus der DB lesen muss um sie dann aufzubereiten. Somit musst du schon mal nur vom Büro zum Webserver einen Abgleich ausführen und nicht auch noch in Gegenrichtung.

Ich würde das wie folgt angehen:

In den relevanten Tabellen bekommen alle (auch zukünftige) Datensätze ein zusätzliches Feld in dem eine UID enthalten ist und ein Feld in dem die letzte Änderung eines Datensatzes festgehalten wird, sowie eine Spalte in der festgehalten wird, dass ein Datensatz überhaupt bearbeitet wurde. Dazu muss man dann über Access die Datenbank entsprechend bearbeiten und erweitern. Die MySQL-DB bekommt ebenfalls die relevanten Tabellen mit identischem Aufbau.
Um die Daten vom Büro zum Webserver abzugleichen brauchst du dann nur noch ein Script das (bspw. per ODBC) in den relvanten Tabellen der Access-DB nach geänderten Datensätzen sucht. VBA geht natürlich aus, dann braucht man kein ODBC. Die zurückgelieferten Daten werden Datensatz für Datensatz an ein PHP-Script übergeben das dann das UPDATE des jeweiligen Datensatzes in der MySQL-DB ausführt. Nachdem jeder einzelne Datensatz übertragen wurde muss in der Access-DB das "geändert Flag" natürlich zurückgesetzt werden.

Wie aktuell die Daten in der MySQL-DB sind hängt dann nur noch davon ab, wie oft das Script den Abgleich durchführt und wie lange es für einen kompletten Durchlauf braucht.

Alternativ kannst du auch alle geänderten Datensätze in eine Daten schreiben und diese mit einem Script per POST an ein PHP-Script auf deinem Webspace übergeben. Nachdem das PHP-Script die Datei bekommen und gespeichert hat muss es dann die Daten aus der Datei einlesen und damit die UPDATEs in der MySQL-DB machen.
Letzteres ist insgesamt schneller aber auch etwas aufwendiger zu schreiben.

Manuel
Member: martenk
martenk Jun 19, 2019 at 15:13:30 (UTC)
Goto Top
Hi Manuel,

lieben Dank für deine Ausführungen - wie würdest du es denn anstellen, dass die Tabelle aus der Access Anwendung auf den Server kommt - ich darf den Mädels dort nicht mit FTP Anwendungen kommen - es müsste letztendlich so aussehen, dass es einen Button in Access gibt - "UPLOAD DER DATEN" - ich müsste im Vorfeld dann die Belegungtabelle in Access als va EXCEL Tabelle zum Server bringen - hast du da ne Idee
Member: manuel-r
Solution manuel-r Jun 19, 2019 at 16:02:37 (UTC)
Goto Top
wie würdest du es denn anstellen, dass die Tabelle aus der Access Anwendung auf den Server kommt

Schrieb ich bereits

Um die Daten vom Büro zum Webserver abzugleichen brauchst du dann nur noch ein Script das (bspw. per ODBC) in den relvanten Tabellen der Access-DB nach geänderten Datensätzen sucht. VBA geht natürlich aus, dann braucht man kein ODBC. Die zurückgelieferten Daten werden Datensatz für Datensatz an ein PHP-Script übergeben das dann das UPDATE des jeweiligen Datensatzes in der MySQL-DB ausführt. Nachdem jeder einzelne Datensatz übertragen wurde muss in der Access-DB das "geändert Flag" natürlich zurückgesetzt werden.
Member: martenk
martenk Jun 20, 2019 at 08:03:42 (UTC)
Goto Top
hi manuel,

lieben Dank nochmal - ich habe es nun anders gemacht und einen anderen hoster für die Belegung genommen - dort geht die odbc schnittstelle