Phpmyadmin: Remote-Verbindung zur phpMyAdmin-Datenbank mithilfe von R.

Erstellt am 11. März 2019  ·  5Kommentare  ·  Quelle: phpmyadmin/phpmyadmin

Mein Problem

Grundsätzlich möchte ich in der Lage sein, die Programmiersprache R für die Interaktion zu verwenden
mit einer MySQL-Datenbank, die über phpMyAdmin verfügbar ist. Im Moment versuche ich es
Stellen Sie fest, ob die Fehler auftreten, die beim Versuch, eine Verbindung zu dieser Datenbank herzustellen, auftreten
weil ich die falschen Argumente übergebe oder ob es nur etwas gibt
Grundsätzlich falsch mit der Art und Weise, wie ich alles mache.

Vorabinformationen

Ich erhielt die folgenden Informationen, mit denen ich arbeiten konnte:

  • Host: tempdb.companyname.com/phpMyAdmin
  • Benutzername: dbs_guest
  • Passwort: Gastpasswort
  • Datenbankname: Firmenname

Was ich versucht habe und was funktioniert hat

Einige bemerkenswerte Dinge:

  1. Ich konnte mich über Chrome bei phpMyAdmin anmelden und wurde erfolgreich ausgeführt
    Fragen, damit ich weiß, dass der MySQL-Server funktioniert und die Anmeldeinformationen sind
    richtig.
  2. Ich konnte die Datenbank auch als SQL-Datei exportieren. habe es eingerichtet
    örtlich; habe direkt mit MariaDB darauf zugegriffen; und haben mit darauf zugegriffen
    R und die entsprechenden R- Pakete.

Mit anderen Worten, es scheint kein Problem mit der entfernten Datenbank zu sein
selbst, meine Installation von MariaDB,
oder mit R und seinen Paketen. [Hinweis: Die Datenbank, auf die ich derzeit Zugriff habe
stellt nur eine kleine Auswahl der vollständigen Datenbank dar, sodass alles heruntergeladen werden kann
lokal ist keine praktikable Option].

Die Lösung, nach der ich suche

Im Moment versuche ich herauszufinden, ob die Variablen, die ich im R verwende
Funktionen zum Herstellen einer Verbindung sind falsch (und wenn dies der Fall ist, was
sollte ich stattdessen verwenden) oder wenn ich einfach alles falsch mache - vielleicht
weil phpMyAdmin etwas grundlegend anderes ist als ich
fehlt. Wenn dies tatsächlich der Fall ist, würde ich gerne wissen, was ich brauchen würde
Um eine Verbindung herzustellen (zum Beispiel würde ich die IP-Adresse des benötigen
MySQL Server selbst, um eine Remote-Verbindung herstellen zu können?).

Um Ihnen einen Eindruck von den Werten zu geben, die ich versucht habe, finden Sie hier ein Beispiel für die
R- Code, den ich ausprobiert habe:

con <- dbConnect(RMariaDB::MariaDB(),
                 host = 'tempdb.companyname.com/phpMyAdmin',
                 dbname = 'companyname',
                 user = 'dbs_guest',
                 password = 'guestpassword')
temptable <- tbl(con, "temptable")

Insbesondere bin ich mir nicht sicher, ob der Wert von " host " korrekt ist, insbesondere
seitdem ich angemeldet bin, wird der Server als "Server: Localhost via UNIX-Socket" angegeben.
Außerdem müsste " Benutzer " als " dbs_guest @ localhost " aufgeführt werden (wie es ist, wenn
angemeldet in phpMyAdmin) oder würde dies durch den Wert von "host" impliziert. Zuletzt,
Ich könnte auch ein " Port " -Argument übergeben, aber ich habe keine Ahnung, was das sein würde
wie auch immer. Oh, und ich bin mir nicht sicher, ob dies davon abhängen würde, ob ich gerade bin oder nicht
beim Ausführen dieser Befehle bei phpMyAdmin angemeldet (z. B. mit Chrome).

Um es noch einmal zu wiederholen, ich versuche nur herauszufinden, ob phpMyAdmin etwas enthält
das macht unmöglich, was ich versuche zu tun (und was ich stattdessen tun müsste)
oder wenn ich nur die variablen Werte falsch verstanden habe.

Danke für Ihre Geduld.

Mit freundlichen Grüßen,
Steve

Zusätzlicher Kontext

phpMyAdmin
  • phpMyAdmin Version: 4.0.10deb1
Datenbankserver
  • Server: Localhost über UNIX-Socket
  • Servertyp: MySQL
  • Serverversion: 5.5.41-0ubuntu0.14.04.1 - (Ubuntu)
  • Protokollversion: 10
  • Benutzer: dbs_guest @ localhost
  • Server-Zeichensatz: UTF-8 Unicode (utf8)
Webserver
  • Apache / 2.4.7 (Ubuntu)
  • Datenbank-Client-Version: libmysql - 5.5.41
  • PHP-Erweiterung: mysqli
question wontfix

Hilfreichster Kommentar

Die meisten MySQL-Installationen verhindern standardmäßig eingehende Netzwerkverbindungen. Um eine direkte Verbindung von einer externen Adresse herzustellen, z. B. einer Anwendung, die auf Ihrem lokalen Computer ausgeführt wird, müssen Sie den MySQL-Port für das Internet verfügbar machen. Das ist im Allgemeinen eine schlechte Sicherheitspraxis. Oft wird phpMyAdmin auf demselben Server wie die MySQL-Instanz ausgeführt, sodass eine Verbindung entweder zur lokalen Hostadresse (127.0.0.1) oder über eine UNIX-Socket-Datei (wie es Ihr phpMyAdmin tut) hergestellt wird.

In phpMyAdmin selbst enthalten wir bewusst keine Methode zum Reflektieren oder Umleiten eingehender Verbindungen direkt zu MySQL, da dies MySQL so ziemlich wie das Öffnen des MySQL-Ports direkt zum Internet aussetzen würde, was wiederum eine sehr schlechte Idee ist. Aus diesem Grund funktioniert die Verwendung der phpMyAdmin-URL selbst als Verbindungszeichenfolge nicht. Sie haben Recht, dass Sie hier stattdessen die Server-IP-Adresse (oder den Hostnamen) benötigen.

Im Allgemeinen haben Sie drei Möglichkeiten, um eine Verbindung zu einer Remote-MySQL / MariaDB-Instanz herzustellen:

  1. den Port direkt aussetzen (was ich dagegen empfehle),
  2. Hosten Sie Ihre Anwendung direkt auf dem Server und greifen Sie remote darauf zu (wie dies bei phpMyAdmin, WordPress oder vielen anderen Tools der Fall ist, obwohl ich nicht weiß, ob R auf diese Weise verwendet werden kann) oder
  3. Bereitstellen einer API auf dem Server über eine benutzerdefinierte Anwendung, die auf dem MySQL-Server gehostet wird und mit der Ihre lokale Anwendung direkt eine Verbindung herstellen kann.

Leider kann Ihnen phpMyAdmin bei keinem dieser Probleme helfen.

Alle 5 Kommentare

@SplashDance Ich bin verwirrt, Sie wissen, dass phpMyAdmin nur eine Webschnittstelle und kein Datenbankserver ist, oder?

Ich verstehe nicht, warum R etwas mit phpMyAdmin zu tun haben würde?

cc @ibennetch
cc @mauriciofauth

Habe ich Ihr Problem falsch verstanden?

Recht. Ich bekomme, dass phpMyAdmin eine Schnittstelle für die Interaktion mit einem Datenbankserver und nicht dem Server selbst. Oder zumindest habe ich ein vages Verständnis dafür, dass ich phpMyAdmin durchlaufen muss, um mit dem Server zu interagieren.

Aber jetzt habe ich nur die phpMyAdmin - Adresse an die Arbeit mit und ich dachte (und ich bekommen , dass dies könnte weg sein Weg) , dass ich müsste in der Tat connect durch phpMyAdmin auf die Datenbank irgendwie.

Ich muss durch phpMyAdmin gehen.

Ich denke nicht, und soweit ich weiß, bieten wir keine API oder Möglichkeit zur Interaktion mit Datenbanken.
Der einzige Weg ist die menschliche Interaktion mit der Schnittstelle

Haben Sie versucht, mit R eine Verbindung zu MySQL herzustellen, wie es http://stla.github.io/stlapblog/posts/RMySQL.html vorschlägt?

Aber im Moment habe ich nur die phpMyAdmin-Adresse, mit der ich arbeiten kann

Möglicherweise befindet sich der Datenbankserver auf demselben Computer wie die Datenbank. Deshalb haben Sie nur den Hostnamen der Datenbank "phpmyadmin" /? Server

Beantwortet das Ihre Frage @SplashDance ?

Die meisten MySQL-Installationen verhindern standardmäßig eingehende Netzwerkverbindungen. Um eine direkte Verbindung von einer externen Adresse herzustellen, z. B. einer Anwendung, die auf Ihrem lokalen Computer ausgeführt wird, müssen Sie den MySQL-Port für das Internet verfügbar machen. Das ist im Allgemeinen eine schlechte Sicherheitspraxis. Oft wird phpMyAdmin auf demselben Server wie die MySQL-Instanz ausgeführt, sodass eine Verbindung entweder zur lokalen Hostadresse (127.0.0.1) oder über eine UNIX-Socket-Datei (wie es Ihr phpMyAdmin tut) hergestellt wird.

In phpMyAdmin selbst enthalten wir bewusst keine Methode zum Reflektieren oder Umleiten eingehender Verbindungen direkt zu MySQL, da dies MySQL so ziemlich wie das Öffnen des MySQL-Ports direkt zum Internet aussetzen würde, was wiederum eine sehr schlechte Idee ist. Aus diesem Grund funktioniert die Verwendung der phpMyAdmin-URL selbst als Verbindungszeichenfolge nicht. Sie haben Recht, dass Sie hier stattdessen die Server-IP-Adresse (oder den Hostnamen) benötigen.

Im Allgemeinen haben Sie drei Möglichkeiten, um eine Verbindung zu einer Remote-MySQL / MariaDB-Instanz herzustellen:

  1. den Port direkt aussetzen (was ich dagegen empfehle),
  2. Hosten Sie Ihre Anwendung direkt auf dem Server und greifen Sie remote darauf zu (wie dies bei phpMyAdmin, WordPress oder vielen anderen Tools der Fall ist, obwohl ich nicht weiß, ob R auf diese Weise verwendet werden kann) oder
  3. Bereitstellen einer API auf dem Server über eine benutzerdefinierte Anwendung, die auf dem MySQL-Server gehostet wird und mit der Ihre lokale Anwendung direkt eine Verbindung herstellen kann.

Leider kann Ihnen phpMyAdmin bei keinem dieser Probleme helfen.

Lassen Sie mich zunächst nur sagen, dass ich all Ihre Antworten sehr schätze (insbesondere angesichts der Amateurhaftigkeit meiner ersten Frage) und Isaacs Antwort besonders schätze - sie war besonders nachdenklich und sehr hilfreich.

Wenn überhaupt, ist es eine Erleichterung, endlich eine endgültige Antwort zu erhalten, damit ich keine Zeit mehr damit verschwenden muss, verschiedene Kombinationen von Funktionsargumenten usw. auszuprobieren.

Nochmals vielen Dank für Ihre Zeit.
Mit freundlichen Grüßen,
Steve

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen