Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con VB.NET + MySQL + Server 2008

Estas en el tema de Problema con VB.NET + MySQL + Server 2008 en el foro de Mysql en Foros del Web. Hola a todos! Tengo un Server 2008 con WampServer. Deseo conectar desde visual basic.net a la base de datos del servidor. Se que el código ...
  #1 (permalink)  
Antiguo 13/01/2016, 08:29
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta Problema con VB.NET + MySQL + Server 2008

Hola a todos!

Tengo un Server 2008 con WampServer. Deseo conectar desde visual basic.net a la base de datos del servidor. Se que el código que tengo funciona porque en debug funciona la conexión. El problema es cuando lo ejecuto desde un pc cualquiera. En el phpmyadmin tengo los permisos del usuario y en el servidor el firewall desactivado para probar y aún así no consigo. En el router también está correctamente redireccionado el puerto. El servidor está escuchando el puerto, comprobado con netstat.

¿Hay algun otro programa que puede estar bloqueando la conexión?

Gracias.
  #2 (permalink)  
Antiguo 13/01/2016, 09:30
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Problema con VB.NET + MySQL + Server 2008

Que error te da? Cual es el contenido de la excepción que salta?

Cuando lo pruebas en debug (y te funciona), lo haces desde el mismo PC y contra el mismo servidor que cuando falla? O cuando lo pruebas en debug lo haces contra un servidor que está en la misma maquina?

Esta mysql configurado correctamente?
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 13/01/2016, 10:10
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

Hola @Malenko, gracias por contestar.

El error que me da es el siguiente:
Código Error:
Ver original
  1. Error: Unable to connect to any of the specified MySQL hosts.
  2.  en MySql.Data.MySqlClient.NativeDriver.Open()
  3.    en MySql.Data.MySqlClient.Driver.Open()
  4.    en MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
  5.    en MySql.Data.MySqlClient.MySqlConnection.Open()
  6.    en Prueba.Connection.InitConnection()

donde InitConnection es:
Código VB.NET:
Ver original
  1. conn = New MySqlConnection()
  2.                 conn.ConnectionString = "Server=XXX.XXX.XXX.XXX; Port=XXX; Database=XXX; Uid=XXX; Pwd=XXX;Pooling=false;Connection Lifetime=1; Max Pool Size=1"
  3.                 conn.Open()

El debug lo hago desde el mismo pc donde tengo el IDE y contra el mismo servidor con el mismo ConnectionString. Si compilo el release y lo pruebo en el pc donde está el IDE funciona pero si lo ejecuto desde otro ordenador me salta ese error.

El mysql funciona correctamente porque tengo puesto el wampserver y con el php lo corro perfectamente.

Si intento acceder desde linea de comandos también me funciona con cualquier pc.
  #4 (permalink)  
Antiguo 13/01/2016, 12:42
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema con VB.NET + MySQL + Server 2008

La posible solución es muy simple, NO utilices el usuario root para conectar, crea un nuevo usuario con permisos a la BD que creaste y que ese usuario se pueda conectar desde cualquier ubicación.

Errores que veo. NUNCA se debe desactivar el cortafuegos de un equipo servidor y menos si está en producción. Eso es dejarlo abierto a que le puedan hacer cualquier cosa.

Agrega una regla para el puerto de escucha de MySQL (yo lo quitaría e instalaría MariaDB) que es el 3306.

El usuario root, por defecto viene con permisos LOCALES, o sea, que no podes usarlo para conectarte desde otro punto de la red. Si me decis que con phpmyadmin lo podes hacer, es porque simplemente te estas conectando con Apache y es LOCAL sin importar que estés en otro punto de la red.

Para crea el usuario, simplemente podes hacerlo con el siguiente comando.
Código:
CREATE USER 'nombre_usuario'@'%' IDENTIFIED BY 'tu_contrasena';
GRANT ALL PRIVILEGES ON * . * TO 'nombre_usuario'@'%';
FLUSH PRIVILEGES;
El signo de porcentaje (%), es para indicar que tendrá permisos de conexión en la red.

Muevo tu consulta a MySQL porque es claro que ahí está el problema y como consejo, investiga sobre los permisos de usuarios y BD de MySQL. Desde su sitio podes descargar el manual en PDF, verlo en html o incluso buscando en google algo puntual.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #5 (permalink)  
Antiguo 13/01/2016, 12:56
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

Hola @BrujoNic,

No uso el usuario root, he creado uno y le he otorgado los permisos adecuados tal y como lo has puesto.

El firewall está activo, sólo he provado a desactivarlo para descartar que fuera la causa del problema (aunque la regla ya está puesta para el puerto no me fiaba).

He publicado porque tengo la misma configuración para otro servidor, eso sí ese con Windows 10 y funciona de maravilla. En cambio, este con Server 2008, nada.

Última edición por makh16; 13/01/2016 a las 13:06
  #6 (permalink)  
Antiguo 14/01/2016, 13:13
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema con VB.NET + MySQL + Server 2008

Entonces activa el firewall y creas una regla para permitir comunicación al puerto 3306 que viene por defecto en MySQL y fíjate que en my.ini esté configurado para permitir conexiones en la red y no solo local.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #7 (permalink)  
Antiguo 14/01/2016, 15:41
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

El firewall ya lo tengo listo y en el my.ini bind-address no me aparece y skip-networking está comentado. Hace falta algún ajuste más?
  #8 (permalink)  
Antiguo 14/01/2016, 15:47
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema con VB.NET + MySQL + Server 2008

Realiza un prueba con telnet IP del servidor puerto

Telnet 192.168.1.10:3306 Ejemplo solamente.

Si te responde, quiere decir que el puerto está abierto y escuchando. Revisa los permisos del usuario que creaste sobre la BD.

En fin, te estoy respondiendo a ciegas porque decir "ya lo tengo, ya lo hice, etc", no me dice nada.

Otro ejemplo sencillo, es que utilices algo como HeidiSQL o cualquier programa cliente de conexión de BD MySQL y compruebes que realmente todo está funcionando.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #9 (permalink)  
Antiguo 15/01/2016, 02:00
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

La respuesta de telnet es la siguiente:

Código :
Ver original
  1. >5.6.7 (carácteres extraños) mysql_native_password

A los 2 o 3 segundos me muestra el mensaje: Se ha perdido la conexión con el host.

Uso HeidiSQL para gestionar la base de datos. He creado los usuarios a través de allí.

En el firewall tengo la regla creada para el puerto 3306 y habilitada para cualquier IP.

La consulta de creación del usuario que utilicé es:

Código :
Ver original
  1. GRANT ALL PRIVILEGES ON *.* TO 'ub'@'%' IDENTIFIED BY PASSWORD 'XXXXXXXX' WITH GRANT OPTION;
  2. FLUSH PRIVILEGES;

Última edición por makh16; 15/01/2016 a las 04:05
  #10 (permalink)  
Antiguo 15/01/2016, 04:06
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema con VB.NET + MySQL + Server 2008

Seguimos con las respuestas "a medio palo".

¿Creaste el usuario y gestionas la BD con HeidiSQL en el equipo cliente o en el servidor? Si todo eso lo haces en el servidor, entonces tus pruebas no sirven.

Si el problema es que no te podes conectar desde el cliente, es en el equipo cliente donde debes hacer TODAS ESTAS PRUEBAS.

Por favor, trata de ponerte en el lugar de las personas que leen tu consulta para que podamos avanzar y ayudarte.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #11 (permalink)  
Antiguo 15/01/2016, 04:39
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

Si, creé el usuario desde el equipo cliente. Con HeidiSQL sí puedo conectarme desde el cliente a través de IP y puerto, y con el mismo usuario. Aunque me pasa lo mismo que con el programa, es decir, desde el cliente donde tengo el IDE me funciona la conexión y el HeidiSQL en cambio para el resto de ordenadores ambas cosas no funcionan y me da el error del Can't connect to the mysql host (10061).

Si me ha faltado algun dato, pido disculpas.

Última edición por makh16; 15/01/2016 a las 04:54
  #12 (permalink)  
Antiguo 15/01/2016, 09:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con VB.NET + MySQL + Server 2008

En cada equipo el puerto tiene que haber sido liberado, así como configurar el Firewall local. También ese equipo debe poder ver al servidor.
¿Eso está verificado?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 15/01/2016, 09:51
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

@gnzsoloyo el firewall está abierto para ambos tanto servidor como cliente y los puertos estan libres, solo los utiliza el mysql.

Como puedo saber si el equipo cliente puede ver al servidor?

Última edición por makh16; 15/01/2016 a las 09:58
  #14 (permalink)  
Antiguo 15/01/2016, 10:30
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema con VB.NET + MySQL + Server 2008

El error Can't connect to the mysql host (10061), si lo buscas, te vas a dar cuenta que es lo que te hemos tratado de decir, o sea, permisos.

Volvamos al principio, elimina el usuario que creaste y lo volves a crear:
Código MySQL:
Ver original
  1. #Grant a un usuario completo a una base de datos
  2. GRANT ALL PRIVILEGES ON db_base.* TO db_user @'%' IDENTIFIED BY 'db_passwd';
  3. FLUSH PRIVILEGES;

Vuelvo a repetir que es IMPORTANTE que el usuario sea creado con % y NO con localhost, ya que el % indica que podrá conectarse desde cualquier equipo de la red.

En el o los equipos clientes NO EN EL SERVIDOR, debes probar con HeidiSQL o cualquier otro programa que se puede conectar sin problema a la BD con ese usuario creado. Con eso te aseguras al 100% que la conexión, usuario y BD están trabajando.

Yo no configuro puertos en los equipos clientes ya que quien debe estar escuchando es el servidor y no los clientes.

En la confiuración de MySQL (en el servidor) debes fijarte si tenes configurado bind-address:
Código PHP:
[mysqld]
bind-address    0.0.0.0 
Si te falla, no te va a quedar otra que comparar el my.cnf del servidor que funciona con el que NO funciona a ver cuales son los cambios. IMPORTANTE, cuando cambies algo den my.cnf, debes reiniciar mysql.

Nuevamente te vuelvo a sugerir que cambies MySQL por MariaDB que está más actualizado.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL

Última edición por gnzsoloyo; 15/01/2016 a las 10:55
  #15 (permalink)  
Antiguo 15/01/2016, 12:38
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

He borrado el usuario y lo he vuelto a crear tal y como me has puesto. He añadido la linea bind-address = 0.0.0.0 en el my.ini. Desde un equipo cliente he probado de conectarme con HeidiSQL con ese usuario y me sigue saliendo el mismo error.

El my.ini del servidor que funciona es exactamente el mismo, salieron del mismo instalador y no hice cambios en ninguno de los 2.

He tenido en cuenta lo de MariaDB pero el problema es que tengo WampServer y mysql ya viene incluido, no se como cambiarlo.
  #16 (permalink)  
Antiguo 15/01/2016, 13:06
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema con VB.NET + MySQL + Server 2008

Lee completo todo por favor. Te queda revisar las configuración de ambos my.ini o my.cnf de ambos equipos a ver que tienen de diferente.

Tengo rato de no montar MariaDB (hace rato dejé MySQL) e incluso MySQL en servidores Linux y no he tenido problemas como lo que mencionas.

Incluso, lo he hecho con Windows para un punto de venta con MySQL/MariaDB donde la BD está en Windows o Linux y ningún cliente a reportado problema.

Te he dicho todo lo que he hecho y ya no se que más decirte.

Además, si solo vas a usar MySQL, no le veo para nada sentido haber instalado WAMPServer si solo me interesa la BD.

También te digo que el rendimiento de BD en Linux, es muy superior que en Windows. Pruebas hechas en el mismo servidor tanto con Windows como Linux para que los clientes vieran su desempeño, no es solo decir que porque linux es mejor sino que maneja mucho mejor los recursos que windows.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #17 (permalink)  
Antiguo 15/01/2016, 13:19
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

He revisado la configuración de ambos ficheros y es la misma excepto porque en el que falla le he añadido la linea del bind-address como me dijiste.

No tengo wampserver para la base de datos, es porque tengo la página web allí y, ahora, necesito conectar a ella a través de VB.NET para una aplicación de escritorio.

Lo he hecho en Windows porque Linux no lo domino tanto.

Última edición por makh16; 15/01/2016 a las 13:25
  #18 (permalink)  
Antiguo 15/01/2016, 13:53
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema con VB.NET + MySQL + Server 2008

Bueno, a como te escribí, he hecho lo que te he escrito cientos de veces más en Linux que en Windows, pero siempre funciona bien.

Si realmente has creado el usuario a como se debe con permiso total % debería de funcionar, ya que el error que te da es totalmente de permisos.

Por mi parte, no puedo ayudarte más, pero definitivamente, es configuración de MySQL y no de otra cosa.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #19 (permalink)  
Antiguo 15/01/2016, 14:52
 
Fecha de Ingreso: enero-2009
Mensajes: 213
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con VB.NET + MySQL + Server 2008

Seguiré probando a ver si lo consigo!

Muchas gracias por tu ayuda!

Etiquetas: ayuda-general, server
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:56.