Phpmyadmin: Conexión a la base de datos phpMyAdmin de forma remota usando R.

Creado en 11 mar. 2019  ·  5Comentarios  ·  Fuente: phpmyadmin/phpmyadmin

Mi problema

Básicamente, quiero poder usar el lenguaje de programación R para interactuar
con una base de datos MySQL disponible a través de phpMyAdmin. Ahora mismo estoy intentando
determinar si los errores que obtengo al intentar conectarme a esta base de datos son
porque estoy pasando argumentos equivocados o si hay algo
fundamentalmente mal con la forma en que estoy haciendo todo.

Información preliminar

Me dieron la siguiente información para trabajar:

  • host: tempdb.companyname.com/phpMyAdmin
  • nombre de usuario: dbs_guest
  • contraseña: guestpassword
  • nombre de la base de datos: nombre de la empresa

Lo que he intentado y lo que ha funcionado

Algunas cosas dignas de mención:

  1. He podido iniciar sesión en phpMyAdmin a través de Chrome y he ejecutado correctamente
    consultas para saber que el servidor MySQL está funcionando y la información de inicio de sesión es
    correcto.
  2. También pude exportar la base de datos como un archivo .sql; lo he configurado
    en la zona; haya accedido directamente usando MariaDB ; y lo he accedido usando
    R y los paquetes R relevantes.

En otras palabras, no parece ser un problema con la base de datos remota
en sí, mi instalación de MariaDB,
o con R y sus paquetes. [Nota: la base de datos a la que tengo acceso actualmente
representa solo una pequeña muestra de la base de datos completa, por lo que descargar todo
localmente no es una opción viable].

La solución que estoy buscando

En este momento estoy tratando de averiguar si las variables que estoy usando en la R
función para establecer una conexión son incorrectas (y, si este es el caso, qué
debería usar en su lugar) o si lo estoy haciendo todo mal, tal vez
porque hay algo fundamentalmente diferente en phpMyAdmin que soy
desaparecido. Si este es el caso, me gustaría saber lo que iba a necesitar
para establecer una conexión (por ejemplo, ¿necesitaría la dirección IP del
¿El propio servidor MySQL para poder conectarse de forma remota?).

Para darte una idea de los valores que he intentado usar, aquí tienes un ejemplo de
Código R que he probado:

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

En particular, no estoy seguro de si el valor de " host " es correcto, especialmente
ya que cuando estoy conectado estoy conectado al servidor se da como "Servidor: Localhost a través del socket UNIX".
Además, el " usuario " debería aparecer como " dbs_guest @ localhost " (como es cuando
log in phpMyAdmin) o estaría implícito en el valor de "host". Finalmente,
También podría pasar un argumento de " puerto ", pero no tengo idea de qué sería
de todas formas. Ah, y no estoy seguro de si algo de esto dependería de si estoy o no actualmente
iniciado sesión en phpMyAdmin (usando Chrome, por ejemplo) mientras ejecuta estos comandos.

Para reiterar, solo estoy tratando de averiguar si hay algo sobre phpMyAdmin
eso hace que lo que estoy tratando de hacer sea imposible (y lo que debería hacer en su lugar)
o si tengo los valores de las variables mal.

Gracias por su paciencia.

Sinceramente,
Steve

Contexto adicional

phpMyAdmin
  • phpMyAdmin versión: 4.0.10deb1
Servidor de base de datos
  • Servidor: Localhost a través del socket UNIX
  • Tipo de servidor: MySQL
  • Versión del servidor: 5.5.41-0ubuntu0.14.04.1 - (Ubuntu)
  • Versión del protocolo: 10
  • Usuario: dbs_guest @ localhost
  • Juego de caracteres del servidor: UTF-8 Unicode (utf8)
Servidor web
  • Apache / 2.4.7 (Ubuntu)
  • Versión del cliente de base de datos: libmysql - 5.5.41
  • Extensión PHP: mysqli
question wontfix

Comentario más útil

La mayoría de las instalaciones de MySQL evitan las conexiones de red entrantes de forma predeterminada. Para conectarse directamente desde una dirección externa, como una aplicación que se ejecuta en su computadora local, tendría que exponer el puerto MySQL a Internet. Por lo general, es una mala práctica de seguridad. Muchas veces, phpMyAdmin se ejecuta en el mismo servidor que la instancia de MySQL, por lo que se conecta a la dirección del host local (127.0.0.1) oa través de un archivo de socket UNIX (que es lo que está haciendo su phpMyAdmin).

Dentro del propio phpMyAdmin, deliberadamente no incluimos ningún método para reflejar o redirigir las conexiones entrantes directamente a MySQL porque eso sería más o menos exponer MySQL de la misma forma que abrir el puerto MySQL directamente a Internet, nuevamente una muy mala idea. Es por eso que el uso de la URL phpMyAdmin en sí como su cadena de conexión no funciona. Tiene razón en que necesitaría la dirección IP del servidor (o el nombre de host) aquí.

Generalmente, tiene tres opciones para conectarse a una instancia remota de MySQL / MariaDB:

  1. exponer el puerto directamente (lo que recomiendo no),
  2. alojar su aplicación directamente en el servidor y acceder a ella de forma remota (como es el caso de phpMyAdmin, WordPress o muchas otras herramientas, aunque no sé si R se puede usar de esta manera), o
  3. exponer una API en el servidor a través de alguna aplicación personalizada, que está alojada en el servidor MySQL, y a la que su aplicación local puede conectarse directamente.

Desafortunadamente, phpMyAdmin no puede ayudarlo con ninguno de esos.

Todos 5 comentarios

@SplashDance Estoy confundido, sabes que phpMyAdmin es solo una interfaz web y no un servidor de base de datos, ¿verdad?

No entiendo por qué R tendría algo que ver con phpMyAdmin.

cc @ibennetch
cc @mauriciofauth

¿Entendí mal tu problema?

Correcto. Obtengo que phpMyAdmin es una interfaz para interactuar con un servidor de base de datos y no con el servidor en sí. O, al menos, tengo un entendimiento vago de que para interactuar con el servidor tengo que pasar por phpMyAdmin.

Pero en este momento solo tengo la dirección phpMyAdmin para trabajar y estaba pensando (y entiendo que esto podría estar muy lejos) que tendría que, en efecto, conectarme a dicha base de datos a través de phpMyAdmin de alguna manera.

Tengo que pasar por phpMyAdmin.

Creo que no, y por lo que sé, no ofrecemos ninguna API o forma de interactuar con bases de datos.
La única forma es la interacción humana con la interfaz.

¿Intentó conectarse con R a mysql como sugiere http://stla.github.io/stlapblog/posts/RMySQL.html ?

Pero ahora solo tengo la dirección phpMyAdmin para trabajar

Quizás el servidor de la base de datos esté en la misma máquina que la base de datos, ¿por eso solo tiene el nombre de host de la base de datos "phpmyadmin" /? servidor

¿ Eso responde a tu pregunta

La mayoría de las instalaciones de MySQL evitan las conexiones de red entrantes de forma predeterminada. Para conectarse directamente desde una dirección externa, como una aplicación que se ejecuta en su computadora local, tendría que exponer el puerto MySQL a Internet. Por lo general, es una mala práctica de seguridad. Muchas veces, phpMyAdmin se ejecuta en el mismo servidor que la instancia de MySQL, por lo que se conecta a la dirección del host local (127.0.0.1) oa través de un archivo de socket UNIX (que es lo que está haciendo su phpMyAdmin).

Dentro del propio phpMyAdmin, deliberadamente no incluimos ningún método para reflejar o redirigir las conexiones entrantes directamente a MySQL porque eso sería más o menos exponer MySQL de la misma forma que abrir el puerto MySQL directamente a Internet, nuevamente una muy mala idea. Es por eso que el uso de la URL phpMyAdmin en sí como su cadena de conexión no funciona. Tiene razón en que necesitaría la dirección IP del servidor (o el nombre de host) aquí.

Generalmente, tiene tres opciones para conectarse a una instancia remota de MySQL / MariaDB:

  1. exponer el puerto directamente (lo que recomiendo no),
  2. alojar su aplicación directamente en el servidor y acceder a ella de forma remota (como es el caso de phpMyAdmin, WordPress o muchas otras herramientas, aunque no sé si R se puede usar de esta manera), o
  3. exponer una API en el servidor a través de alguna aplicación personalizada, que está alojada en el servidor MySQL, y a la que su aplicación local puede conectarse directamente.

Desafortunadamente, phpMyAdmin no puede ayudarlo con ninguno de esos.

En primer lugar, permítanme decirles que realmente aprecio todas sus respuestas (especialmente considerando lo amateur de mi pregunta inicial) y aprecio especialmente la respuesta de Isaac - fue particularmente considerada y muy útil.

En todo caso, es un alivio finalmente obtener una respuesta definitiva para no tener que perder más tiempo probando diferentes combinaciones de argumentos de función, etc.

Nuevamente, gracias por tu tiempo.
Sinceramente,
Steve

¿Fue útil esta página
0 / 5 - 0 calificaciones