[C con Clase] Error 10061 con Mysql
Steven R. Davidson
vze266ft en verizon.net
Mar Feb 26 20:35:23 CET 2008
Hola Antonio,
Antonio Escalante wrote:
>
> Primeramente antes de nada me gustaria agredeceros vuestra ayuda.
>
> A lo que el problema se refiere, he de decir que aun persiste. He
> modificado la tabla mysql.user, incluso he añadido
> especificamente un usuario prueba que solo puede concectarse desde mi ip
> y nada. La tabla queda asi:
>
>
> +-----------+---------+
>
> | host | user |
>
> +-----------+---------+
>
> | localhost | % |
>
> | localhost | root |
>
> | antonio | % |
>
> | prueba |88.9.211.137|
>
> +-----------+---------+
>
>
> Incluso usando la herramienta mysql administrator con el usuario prueba
> y con mi propia ip sigue sin haber solucion, lo curioso
> es que me tira la conexion con el error 10061 pero si que me dejar
> hacerle ping a mi ip y hay respuesta que raro no?
>
Esto significa que el servidor existe y está activo, por lo que el
problema es los parámetros que pasas para conectarte al servidor de
MYSQL, específicamente el "hospedador" (host).
Asegúrate de que realmente tienes el número IP correcto para tu máquina.
No sé qué configuración tienes en tu red, pero ejecutando "ipconfig" en
la consola te dará las conexiones y números IP que existen en tu
sistema. No elijas el número IP de tu conexión, sino de tu adaptador de
Ethernet (o lo que tengas). Por ejemplo, debería aparecer en pantalla
algo como:
Windows IP Configuration
Ethernet adapter LAN:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.0.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
PPP adapter PCI Adapter #1:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 167.23.10.78
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 167.23.10.78
Obviamente, algunos datos serán diferentes a los que he expuesto aquí.
También puedes usar el nombre de tu PC en lugar del número IP cuando te
conectas al servidor de MySQL.
> Por otro lado en modo debug ejecutando linea a linea y con localhost no
> hay problema alguno es justo al cambiar localhost
> por la direccion de un host remoto (o mi ip) cuando me tira el error.
>
> #include <stdio.h>
> #include <windows.h>
> #include <mysql.h>
> #include <mysqld_error.h>
> void main()
> {
> MYSQL *myData;
> char *servidor = "88.9.211.137";
> myData = mysql_init(0);
> if(mysql_real_connect(myData, servidor, "prueba", "123456", "mysql",
> 3306, NULL, 0) == NULL)
> printf("Error: %s", mysql_error(myData));
> else
> printf("Todo bien, hemos establecido conexion con el servidor\n");
Deberías cerrar la conexión a MySQL invocando 'mysql_close()'. Sé que se
trata de un ejemplo, pero lo menciono para aclarar el asunto.
> }
>
> He hecho pruebas cambiando el usuario prueba por ejemplo por prueVa y ni
> siquiera me da error referente a usuario
> desconocido porque ni llega al parametro usuario, en cuanto topa con el
> parametro host lanza el error.
>
Bueno, debo decir que tienes un error en la tabla "mysql.user". La
primera entrada está mal y la segunda es correcta. No estoy seguro sí
tienes uno o dos errores en la tercera, y con la cuarta te aseguro que
está mal. Si quieres permitir a cualquier usuario de 'localhost',
entonces debes indicar un usuario en blanco; no puedes usar el comodín
"%". Esto sería,
+-----------+---------+
| host | user |
+-----------+---------+
| localhost | |
+-----------+---------+
En MYSQL, esto sería una actualización,
mysql> update mysql.user set user='' where user='% and host='localhost';
Según la tercera entrada (o fila), tu máquina se llama "antonio" y
quieres permitir al usuario "%" acceso. Creo que querías indicar lo
inverso: cualquier máquina por el usuario "antonio". Esto sería,
mysql> update mysql.user set host='%',user='antonio' where host='antonio';
Obtendremos,
+-----------+---------+
| host | user |
+-----------+---------+
| localhost | |
| localhost | root |
| % | antonio |
+-----------+---------+
Con la última entrada que tienes, nuevamente, debería ser al revés; esto es,
mysql> update mysql.user set host='88.9.211.137',user='prueba' where
host='prueba';
Obtendremos,
+--------------+---------+
| host | user |
+--------------+---------+
| localhost | |
| localhost | root |
| % | antonio |
| 88.9.211.137 | prueba |
+--------------+---------+
Para cerciorarnos de que el sistema realiace estos cambios, ejecuta
"flush". Por ejemplo,
mysql> flush tables, privileges;
Viendo el número IP, debo reiterar que posiblemente éste no sea el
número de IP de tu máquina. Parece que es el número IP de tu router u
otro servidor. Nuevamente, desconozco tu configuración de red, por lo
que es posible que todo esté en orden.
Espero que todo esto te sirva de ayuda.
Steven
Más información sobre la lista de distribución Cconclase