La conexión remota de MySQL falla (10060) - "No se puede conectar al servidor MySQL en domainname.com (10060)"

8

He desarrollado una aplicación en VB6 y estoy usando un servidor de base de datos MySQL en línea para almacenar los datos de mi aplicación.

La primera vez que trato de conectarme a mi servidor de base de datos es exitosa, pero después de cerrar mi aplicación e iniciarla nuevamente obtengo:

No se puede conectar al servidor MySQL (10060) "

Después de un tiempo (aproximadamente 30 minutos), puedo conectarme nuevamente con éxito a la base de datos.

  • He dado valores máximos a todo el sistema MySQL y variables globales como connection_timeout , wait_timeout , etc.
  • He otorgado todos los permisos a mi usuario de MySQL.
  • El firewall en mi computadora está apagado.
  • Todas las conexiones se cierran correctamente cuando se cierra la aplicación.

Le pregunté a la gente técnica que proporciona el servicio de base de datos MySQL en línea y me dieron estas tres razones:

  1. La máquina local desde la que está intentando conectarse no está en la lista blanca del servidor.
  2. Se ha excedido el número máximo de conexiones para el usuario.
  3. El servidor MySQL estaba inactivo en ese momento (aunque dijeron que su servidor no estaba inactivo).

¿Cómo puedo resolver las dos primeras razones o determinar si son la causa del problema? ¿O podría haber otro problema que no figura en la lista?

Ashok Gujjar
fuente
¡+1 por usar VB6 en 2015!
raphael75
vea este enlace que encontré: superuser.com/questions/1364906/ ... Resuelvo mi problema con él.
FarHooD

Respuestas:

2

debes asegurarte de que haya:

1) usuario creado que tiene acceso remoto, por ejemplo, usuario @ 'xxxx'

2) hay una conexión desde las dos máquinas (se pueden hacer ping entre sí, por ejemplo o acceder entre sí por otro método), el puerto se abre entre las dos máquinas

3) my.ini/my.cnfhay un parámetro de conexión de bloqueo como: bind-address=a.a.a.aoskip-networking

4) el servicio está en funcionamiento cuando intenta conectarse desde la otra máquina

Ahmad Abuhasna
fuente
0

Lo más probable es que este sea un problema secundario de red y el proveedor de servicios de base de datos necesita crear una nueva regla en el firewall (iptables). Aún así, solo tenemos que confirmar algunas cosas del proveedor. Como el comportamiento no es estable (en ocasiones puede conectarse, y a veces no). Así que no es un problema de privilegio de usuario (OTORGAR TODO EN ...)

  1. Asegúrese de que hayan incluido el puerto de escucha MySQL en la lista de desbloqueo / excepción del firewall. Más comúnmente es 3306
  2. Intente aumentar el parámetro max_connection en my.cnf
  3. En my.cnf, asegúrese de que ' skip-networking ' esté comentado, también bind-address = 127.0.0.1
  4. ¿Cuál es el resultado si utilizamos lo siguiente desde la línea de comandos telnet ip_mysql_server 3306
Big Data DBA
fuente
1
en Windows Telnet probablemente no esté disponible: use powershell PS C: \ Windows \ system32> New-Object System.Net.Sockets.TcpClient ("ip_mysql_server", 3306) Cliente: System.Net.Sockets.Socket Disponible: 78 Conectado: Verdadero <== esto indica que puede llegar al servidor ExclusiveAddressUse: False ReceiveBufferSize: 65536 SendBufferSize: 64512 ReceiveTimeout: 0 SendTimeout: 0 LingerState: System.Net.Sockets.LingerOption NoDelay: False
user906489
0

Proporcione la salida de telnet (ip): puerto

Tuve el mismo problema la última vez y el iptables es el culpable en ese momento.

Cuando el servidor se reinicia, la regla de iptables se vuelve predeterminada y no aplica el filtro para ciertos puertos.

Comprueba las iptables

s_ramesh
fuente
0

Primero verifique si le otorgó los privilegios adecuados al usuario en su host actual a través del cual está intentando conectarse al servidor MySQL.

  1. Verifique su nombre de host primero
  2. Luego, inicie sesión en MySQL a través de superusuario como 'root'
  3. Compruebe si se otorgan los privilegios o no select * from mysql.user where host="host_name"\G;
  4. Otorgue todos los privilegios primero, luego intente conectarse nuevamente.

grant all on *.* to 'user'@'host_name' identified by 'Password';

Espero que esto te sea útil.

Rk Singh
fuente
0

Pasé un día entero golpeándome la cabeza tratando de resolver esto y resultó que la red de Windows estaba configurada como pública en lugar de privada, lo que bloquea todas las conexiones entrantes. Espero que esto ayude a alguien.

Miró
fuente
-1

Algunos proveedores de hosting bloquean por defecto el acceso remoto a sus servidores MySql por razones de seguridad. Si necesita desbloquear el servicio de acceso remoto, dígales que desbloquee este servicio.

De lo contrario, pruebe su aplicación localmente, como localhost y cuando esto funcione bien, cambie el nombre de host, y así sucesivamente los parámetros de la base de datos en su aplicación, y cárguela en su servidor de alojamiento web, ¡eso funciona bien!

Tenga cuidado, que el diseño de su base de datos verifique con el diseño de su base de datos local, ¡esto es muy importante!

Espero que esto te sea útil.

Humberto Enríquez
fuente
2
¿Crees que solo bloquean cada segundo intento?
dezso
-1

Dos cosas para agregar para los usuarios de mariadb:

1) my.cnf es para nosotros también => allí encontré la bind-address = 127.0.0.1línea

2) debe reiniciar el servicio después de cambiar el archivo my.cnf

Espero que esto ayude

Ulrich
fuente