PDA

Ver la Versión Completa : Conectar a MySQL desde aplicación Delphi


MAXIUM
08-09-2015, 15:54:18
Saludos a todos,

La siguiente consulta corresponde a como lograr conectar a MySQL desde Delphi a un webhosting, para usar la base de datos alojada ahí, pero que no permite la conexión remota.

Es decir, dentro del dominio a través de php no tengo ningún problema. Pero cuando quiero conectarme mediante una aplicación Delphi, usando los componentes como ZEOS por ejemplo, no me permite.

En el CPanel, apartado de la base de datos, he agregado el comodín % o colocado mi IP para permitir esto. Sin embargo, no me resulta.

El hosting es de servicios básicos y viene con estas restricciones.

¿Existe forma de saltarse este impedimento solo del lado de la aplicación Delphi?

De antemano, muchas gracias.

adrall
08-09-2015, 16:45:05
Para poder acceder remotamente a una BD MySQL o SQL en general, el usuario debe tener permiso de acceso remoto y esto es algo que solo puede conceder el administrador de la BD.

Deberas solicitarlo al administrador. Tembien debes conocer la direccion IP o nombre DNS y por supuesto el nombre de la BD.

MAXIUM
08-09-2015, 17:18:47
Hola adrall, como expliqué, eso no me resulta.

La única vez que pude, fue cuando hable con el soporte del hosting y ellos dieron de baja el firewall de sus servicios... Algo claramente imprudente.

Leí un poco más y tal parece que debo crear un tunel SSH o HTTP, Indy y blabla...

Seguiré investigando, pero si alguien ya lo ha hecho, le agradecere lo pasos a seguir.

roman
08-09-2015, 17:42:19
un tunel SSH

Yo creo que éste es el camino. Hay muchos clientes de MySql que pueden conectarse a un servidor cerrado al exterior por esta vía así que es factible. Claro que para ello, tu proveedor debe darte acceso por SSH, que no todos lo dan. En caso afirmativo, si careces de componentes que usen el protocolo SSH (sólo he visto componentes de pago) creo que puedes usar software externo como PUTTY para el mismo efecto, pero no lo aseguro.

// Saludos

adrall
09-09-2015, 09:31:55
¿Existe forma de saltarse este impedimento solo del lado de la aplicación Delphi?

Reitero la respuesta a tu pregunta, hablando de métodos "normales" no se puede acceder a una BD sin permiso del administrador, ya sea sin cifrar, con cifrado SSL o con un túnel SSH. Imagina que problema de seguridad plantearía que fuera posible tal acceso.

Otra cosa será con algún sistema de "hackeado" que desconozco totalmente.

pacopenin
09-09-2015, 10:19:04
Buenos días.

Have unos meses se comentó sobre este tema http://www.clubdelphi.com/foros/showthread.php?t=86289 (http://www.clubdelphi.com/foros/showthread.php?t=86289&page=3). A mi se me ocurrió una solución de la que estoy haciendo uso con buenos resultados y que comenté en dicho post. He ampliado dicha solución añadiendo una bbdd local (firebird embedded) y ahora tengo un pequeño programa con el que estoy experimentando y que permite trabajar incluso si no hay conexión a internet.

Saludos,

giulichajari
09-09-2015, 11:21:48
Buenos días.

Have unos meses se comentó sobre este tema http://www.clubdelphi.com/foros/showthread.php?t=86289 (http://www.clubdelphi.com/foros/showthread.php?t=86289&page=3). A mi se me ocurrió una solución de la que estoy haciendo uso con buenos resultados y que comenté en dicho post. He ampliado dicha solución añadiendo una bbdd local (firebird embedded) y ahora tengo un pequeño programa con el que estoy experimentando y que permite trabajar incluso si no hay conexión a internet.

Saludos,

Una solucion son los WebServices.. Yo trabajo con DataSnap.. aunque es una aplicacion para una empresa a la medida. no uso base de datos local, en vez de esto guardo un archivo.xml, al igual que con las nuevas facturas... Cuando hay conexion se cargan los xml en la bd

roman
09-09-2015, 17:37:36
no se puede acceder a una BD sin permiso del administrador, ya sea sin cifrar, con cifrado SSL o con un túnel SSH. Imagina que problema de seguridad plantearía que fuera posible tal acceso.

No sé a qué te refieres con eso. Partimos del hecho de que se tienen los permisos para acceder a la base de datos. La problemática que plantea MAXIUM es si se puede acceder de forma remota. Esto último, como mencioné anteriormente, es en principio posible usando SSH. Si el proveedor de internet le da acceso por SSH, puede usar plink (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) de esta forma:


plink -L 33825:ip_remota:3306 usuario@servidor


Esto lo que hace es establecer un túnel que conecta el puerto local 33825 (arbitrario) con el puerto remoto 3306 (el de mysql).

ip_remota es la dirección ip del servidor donde esté la base de datos
usuario@servidor es el nombre de usuario y servidor con acceso ssh que pueda acceder a la base (normalmente coincide con ip_remota pero no necesariamente).

Cualquier petición local al puerto 33825 será enviada al puerto remoto 3306. Por ejemplo, si se tiene el cliente de mysql instalado en el equipo local, puede usarse:


mysql -uusuario -p -P33825


para conectarse al servidor remoto. usuario sería el usuario de la bd remota.

// Saludos