Phpmyadmin: Connexion à distance à la base de données phpMyAdmin à l'aide de R.

Créé le 11 mars 2019  ·  5Commentaires  ·  Source: phpmyadmin/phpmyadmin

Mon problème

En gros, je veux pouvoir utiliser le langage de programmation R pour interagir
avec une base de données MySQL disponible via phpMyAdmin. En ce moment j'essaye de
déterminer si les erreurs que je reçois en essayant de me connecter à cette base de données sont
parce que je passe les mauvais arguments ou s'il y a juste quelque chose
fondamentalement faux avec la façon dont je fais tout.

Information préliminaire

J'ai reçu les informations suivantes pour travailler avec:

  • hôte: tempdb.companyname.com/phpMyAdmin
  • nom d'utilisateur: dbs_guest
  • mot de passe: mot de passe invité
  • nom de la base de données: nom de l'entreprise

Ce que j'ai essayé et ce qui a fonctionné

Quelques points à noter:

  1. J'ai pu me connecter à phpMyAdmin via Chrome et j'ai exécuté avec succès
    requêtes afin que je sache que le serveur MySQL fonctionne et que les informations de connexion sont
    correct.
  2. J'ai également pu exporter la base de données sous forme de fichier .sql; l'avoir mis en place
    localement; y ont accédé directement en utilisant MariaDB ; et y avez accédé en utilisant
    R et les packages R correspondants.

En d'autres termes, cela ne semble pas être un problème avec la base de données distante
lui-même, mon installation de MariaDB,
ou avec R et ses packages. [Remarque: la base de données à laquelle j'ai actuellement accès
ne représente qu'un petit échantillon de la base de données complète, donc le téléchargement de tout
localement n’est pas une option viable].

La solution que je recherche

En ce moment, j'essaie de déterminer si les variables que j'utilise dans le R
fonction pour établir une connexion sont faux (et, si tel est le cas,
devrais- je utiliser à la place) ou si je fais tout faux - peut-être
parce qu'il y a juste quelque chose de fondamentalement différent à propos de phpMyAdmin que je suis
manquant. Si tel est le cas, je voudrais savoir ce que je aurais besoin
pour établir une connexion (par exemple, aurais-je besoin de l'adresse IP du
Serveur MySQL lui-même pour pouvoir se connecter à distance?).

Pour vous donner une idée des valeurs que j'ai essayées d'utiliser, voici un exemple de
Code R que j'ai essayé:

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

En particulier, je ne suis pas sûr que la valeur de " host " soit correcte, en particulier
puisque quand je suis connecté, le serveur est donné comme "Serveur: Localhost via socket UNIX".
De plus, " user " devrait-il être répertorié comme " dbs_guest @ localhost " (comme c'est le cas lorsque
connecté à phpMyAdmin) ou cela serait-il impliqué par la valeur de "host". Enfin,
Je pourrais aussi passer un argument " port " mais je n'ai aucune idée de ce que ce serait
en tous cas. Oh, et je ne suis pas sûr que tout cela dépende du fait que je suis ou non actuellement
connecté à phpMyAdmin (à l'aide de Chrome, par exemple) lors de l'exécution de ces commandes.

Pour réitérer, j'essaie juste de savoir s'il y a quelque chose à propos de phpMyAdmin
cela rend ce que j'essaye de faire impossible (et ce que j'aurais besoin de faire à la place)
ou si je viens de me tromper sur les valeurs des variables.

Merci pour votre patience.

Cordialement,
Steve

Contexte supplémentaire

phpMyAdmin
  • Version de phpMyAdmin: 4.0.10deb1
Serveur de base de données
  • Serveur: hôte local via socket UNIX
  • Type de serveur: MySQL
  • Version du serveur: 5.5.41-0ubuntu0.14.04.1 - (Ubuntu)
  • Version du protocole: 10
  • Utilisateur: dbs_guest @ localhost
  • Jeu de caractères du serveur: UTF-8 Unicode (utf8)
serveur Web
  • Apache / 2.4.7 (Ubuntu)
  • Version du client de base de données: libmysql - 5.5.41
  • Extension PHP: mysqli
question wontfix

Commentaire le plus utile

La plupart des installations MySQL empêchent les connexions réseau entrantes par défaut. Pour vous connecter directement à partir d'une adresse externe, telle qu'une application exécutée sur votre ordinateur local, vous devez exposer le port MySQL à Internet. C'est généralement une mauvaise pratique de sécurité. Plusieurs fois, phpMyAdmin s'exécute sur le même serveur que l'instance MySQL, donc il se connecte soit à l'adresse de l'hôte local (127.0.0.1) soit via un fichier socket UNIX (ce que fait votre phpMyAdmin).

Dans phpMyAdmin lui-même, nous n'incluons délibérément aucune méthode pour refléter ou rediriger les connexions entrantes directement vers MySQL, car cela exposerait à peu près MySQL de la même manière que l'ouverture du port MySQL directement sur Internet, encore une fois une très mauvaise idée. C'est pourquoi l'utilisation de l'URL phpMyAdmin elle-même comme chaîne de connexion ne fonctionne pas. Vous avez raison de dire que vous auriez besoin de l'adresse IP du serveur (ou du nom d'hôte) ici à la place.

En règle générale, vous avez trois options pour vous connecter à une instance MySQL / MariaDB distante:

  1. exposer le port directement (ce que je déconseille),
  2. héberger votre application directement sur le serveur et y accéder à distance (comme c'est le cas avec phpMyAdmin, WordPress, ou bien d'autres outils, même si je ne sais pas si R peut être utilisé de cette manière), ou
  3. exposer une API sur le serveur via une application personnalisée, qui est hébergée sur le serveur MySQL, et à laquelle votre application locale peut se connecter directement.

Malheureusement, phpMyAdmin ne peut vous aider avec aucun de ces éléments.

Tous les 5 commentaires

@SplashDance Je suis confus, vous savez que phpMyAdmin n'est qu'une interface Web et non un serveur de base de données, non?

Je ne comprends pas pourquoi R aurait quelque chose à voir avec phpMyAdmin?

cc @ibennetch
cc @mauriciofauth

Ai-je mal compris votre problème?

Droite. J'obtiens que

Mais en ce moment je n'ai que l'adresse de phpMyAdmin pour travailler avec et je pensais (et je reçois que cela pourrait être loin) que je dois, en effet, de connexion à ladite base de données via phpMyAdmin en quelque sorte.

Je dois passer par phpMyAdmin.

Je ne pense pas, et d'après ce que je sais, nous n'offrons aucune API ou moyen d'interagir avec les bases de données.
Le seul moyen est l'interaction humaine avec l'interface

Avez-vous essayé de vous connecter avec R à mysql comme le suggère http://stla.github.io/stlapblog/posts/RMySQL.html ?

Mais pour le moment, je n'ai que l'adresse phpMyAdmin avec laquelle travailler

Peut-être que le serveur de base de données est sur la même machine que la base de données, ce serait pourquoi vous n'avez que le nom d'hôte de la base de données "phpmyadmin"? serveur

Est-ce que cela répond à votre question @SplashDance ?

La plupart des installations MySQL empêchent les connexions réseau entrantes par défaut. Pour vous connecter directement à partir d'une adresse externe, telle qu'une application exécutée sur votre ordinateur local, vous devez exposer le port MySQL à Internet. C'est généralement une mauvaise pratique de sécurité. Plusieurs fois, phpMyAdmin s'exécute sur le même serveur que l'instance MySQL, donc il se connecte soit à l'adresse de l'hôte local (127.0.0.1) soit via un fichier socket UNIX (ce que fait votre phpMyAdmin).

Dans phpMyAdmin lui-même, nous n'incluons délibérément aucune méthode pour refléter ou rediriger les connexions entrantes directement vers MySQL, car cela exposerait à peu près MySQL de la même manière que l'ouverture du port MySQL directement sur Internet, encore une fois une très mauvaise idée. C'est pourquoi l'utilisation de l'URL phpMyAdmin elle-même comme chaîne de connexion ne fonctionne pas. Vous avez raison de dire que vous auriez besoin de l'adresse IP du serveur (ou du nom d'hôte) ici à la place.

En règle générale, vous avez trois options pour vous connecter à une instance MySQL / MariaDB distante:

  1. exposer le port directement (ce que je déconseille),
  2. héberger votre application directement sur le serveur et y accéder à distance (comme c'est le cas avec phpMyAdmin, WordPress, ou bien d'autres outils, même si je ne sais pas si R peut être utilisé de cette manière), ou
  3. exposer une API sur le serveur via une application personnalisée, qui est hébergée sur le serveur MySQL, et à laquelle votre application locale peut se connecter directement.

Malheureusement, phpMyAdmin ne peut vous aider avec aucun de ces éléments.

Tout d'abord, permettez-moi de dire que j'apprécie vraiment toutes vos réponses (surtout compte tenu de l'amateurisme de ma question initiale) et j'apprécie particulièrement la réponse d'Isaac - elle a été particulièrement réfléchie et très utile.

Si quoi que ce soit, c'est un soulagement d'obtenir enfin une réponse définitive pour ne plus perdre de temps à essayer différentes combinaisons d'arguments de fonction, etc.

Encore une fois, merci pour votre temps.
Cordialement,
Steve

Cette page vous a été utile?
0 / 5 - 0 notes