Foros del Web » Programando para Internet » PHP »

Problema al conectar con una BD MySQL remota

Estas en el tema de Problema al conectar con una BD MySQL remota en el foro de PHP en Foros del Web. Hola a todos, Tengo un problema. Intento conectar mediante un script PHP ubicado en un VPS a una BD MySQL ubicada en un servidor dedicado ...
  #1 (permalink)  
Antiguo 11/10/2011, 00:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 70
Antigüedad: 14 años, 11 meses
Puntos: 0
Problema al conectar con una BD MySQL remota

Hola a todos,

Tengo un problema. Intento conectar mediante un script PHP ubicado en un VPS a una BD MySQL ubicada en un servidor dedicado ajeno a la red donde esta el VPS.

El codigo es el siguiente:

Código PHP:

Código PHP:
if(!($bdconnect_tpv mysql_connect($ip_1$user_1$pass_1))) 
    { 
    echo 
"Error de conexion"
    } 
else 
    { 
    echo 
"Conexión correcta"
    } 
Y devuelve:

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'x.x.x.x' (13) in /var/www/html/db.php on line 7
Error de conexion


Pero cual es mi sorpresa. Si me conecto por SSH al servidor VPS y ejecuto el comando: php /var/www/html/db.php CONECTA!!

Conclusión:

+ Tema de permisos no es, garantizado que el usuario tiene permisos. Sino la instrucción en consola fallaría también.
+ Tema de firewall tampoco es, ya que la BD conecta desde otros servidores de forma remota y ademas por consola también fallaría.
+ El problema esta en algo que marque la diferencia de escribir en tu navegador la URL o ejecutar el php a mano (apache podría ser???)

La configuración de apache es la normal, no se ha tocado nada raro.

Solo añadir que este servidor VPS también tiene una BD LOCAL (he pensado que puede ser esto, que al existir en el mismo server una BD no permita conectarse a otra externa, pero entonces porque funciona en consola??)

Llevo muchos días sin solucionar el problema. POR FAVOR, alguien tiene idea de al menos pro donde puede venir el problema?

Gracias.

PD: Completamente descartado que el problema este en la BD. Desde el mismo servidor una aplicacion hecha en C# ejecutandose en MONO funciona perfectamente contra la BD con el mismo usuario y contraseña que el script PHP. El problema tiene que estar en apache/php.
  #2 (permalink)  
Antiguo 11/10/2011, 00:40
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Problema al conectar con una BD MySQL remota

Para salir de duda, instálate en tu ordenador la aplicación mysql adminsitrator, (por decir uno) y haz una conexión al vps. Recuerda que para configurar la conexión tienes que usar el puerto 3306, si el servidor tiene cerrado dicho puerto por firewall, entonces ahí estará el problema.

Saludos.
  #3 (permalink)  
Antiguo 11/10/2011, 03:33
 
Fecha de Ingreso: mayo-2009
Mensajes: 70
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema al conectar con una BD MySQL remota

Cita:
Iniciado por gogupe Ver Mensaje
Para salir de duda, instálate en tu ordenador la aplicación mysql adminsitrator, (por decir uno) y haz una conexión al vps. Recuerda que para configurar la conexión tienes que usar el puerto 3306, si el servidor tiene cerrado dicho puerto por firewall, entonces ahí estará el problema.

Saludos.
Garantizado de que el servidor tiene el puerto abierto y no es del servidor MySQL. Date cuenta de este detalle...

Si ejecuto el archiv db.php (que es el que intenta hacer la conexion) por consola directamente con el comando "php db.php" ME CONECTA. Sin embargo si escribo la URL en un navegador cualquiera NO ME CONECTA.

Esto deja bien claro que es cosa del APACHE, no de los firewall de cualquiera de los servidores o del servidor BD. Ya que si el problema estuviera en el Fire o en la BD fallaria de ambas formas inevitablemente.

¿Alguna idea de donde puede estar el problema en el httpd.conf? U otro lado ...

PD: Recuerdo, que si conecto a una BD LOCAL, en el propio server, no hay problemas ... el problema viene con cualquier BD REMOTA.
  #4 (permalink)  
Antiguo 11/10/2011, 04:13
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Problema al conectar con una BD MySQL remota

Cita:
Iniciado por XokenK Ver Mensaje
PD: Recuerdo, que si conecto a una BD LOCAL, en el propio server, no hay problemas ... el problema viene con cualquier BD REMOTA.

Pues tu mismo lo estás diciendo, cuando te conectar po SSL usando putty y otro programa de telnet, te estás conectado al servidor y estás como si fuera en local, y evidentemente te vas a poder conectar a MYSQL.

El problema está cuando te conectas desde un servidor remoto sin usar SSL, el servidor te corta dicha comunicación.

Por cierto, puedes poner el código PHP para conectarte a la BD.

Saludos
  #5 (permalink)  
Antiguo 11/10/2011, 06:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 70
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema al conectar con una BD MySQL remota

No, a ver ...

El tema ha llegado a un punto que he creado dos archivos PHP:

db_local.php
db_remote.php

Ambos tienen este codigo:

Código PHP:
if(!($bdconnect_tpv mysql_connect($ip$user$pass)))  
    {  
    echo 
"Error de conexion";  
    }  
else  
    {  
    echo 
"Conexión correcta";  
    } 
Logicamente en uno la variable $ip es "localhost" y en otro la IP del servidor remoto.

Pues bien, si ejecuto ambos archivos desde mi navegador ... el db_remote.php falla pero el db_local.php no falla (logico, conectar la BD local del propio VPS no hay conexion entre servidores).

Hasta aqui, podriamos pensar lo que dices, que es el firewall (el de BD descartado, porque desde otros servidores si funciona).

Pero si yo me conecto por TELNET al servidor y ejecuto en la consola:

php db_remote.php

FUNCIONA.

Si funciona ejecutando eso, quiere decir que el firewall no es, porque hace la misma conexion que cargando el archivo mediante el navegador.

Es decir, el problema esta en el APACHE ya que ejecutando el PHP a pelo si va.

Logicamente en ambos casos db_local.php funciona, ya que ahi si que es una conexion local.

Otra muestra de que el problema esta en apache y no en el firewall, es que hay otro programa en el VPS (programado en C# corriendo en mono) que usa el mismo usuario, contraseña, puerto y base de datos y conecta. Por tanto, si fuera el firewall o el puerto tambien fallaria.

Saludos.
  #6 (permalink)  
Antiguo 11/10/2011, 08:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al conectar con una BD MySQL remota

Es por lo que te dicen más arriba, cuando tu te conectas vía SSH al servidor, es el ambiente local del servidor aunque estes conectado de forma remota es por eso que si ejecutas el script fuera del servidor (con la IP) te esta denegando la conexión.

Tienes que verificar dos cosas:
- Que no haya un firewall bloqueando la comunicación (un simple ping al servidor desde tu maquina local al puerto 3306 debe de comprobarlo).
- Que el usuario que estes usando para conectarte tenga permisos para acceder al servidor desde la ip desde donde te quieres conectar (por defecto MySQL solo te permite conectarte desde localhost).

Saludos.
  #7 (permalink)  
Antiguo 11/10/2011, 12:57
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Problema al conectar con una BD MySQL remota

Cita:
Iniciado por GatorV Ver Mensaje
Es por lo que te dicen más arriba, cuando tu te conectas vía SSH al servidor, es el ambiente local del servidor aunque estes conectado de forma remota es por eso que si ejecutas el script fuera del servidor (con la IP) te esta denegando la conexión.

Tienes que verificar dos cosas:
- Que no haya un firewall bloqueando la comunicación (un simple ping al servidor desde tu maquina local al puerto 3306 debe de comprobarlo).
- Que el usuario que estes usando para conectarte tenga permisos para acceder al servidor desde la ip desde donde te quieres conectar (por defecto MySQL solo te permite conectarte desde localhost).

Saludos.
Oye, gracias a esto, he podido encontrar una utilidad para hacer ping a un puerto específico, sabía que con PING no funcionaba, asi que he encontrado TCPING y funciona de maravillas.

XokenK, busca esta utilidad en google y hazle un ping al puerto 3306 que es el que usa mysql (por defecto) y ya saldrás de toda dudas.

Salduos.
  #8 (permalink)  
Antiguo 14/10/2011, 03:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 70
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema al conectar con una BD MySQL remota

Hola,

Gracias por vuestra ayuda, lo primero.

Estais dando vueltas al firewall o permisos. NO ES EL FIREWALL O PERMISOS. Efectivamente me da ping al puerto 3306.

Se lo que hago ... y os garantizo que no esta ahi el problema. El problema esta en que algo en la configuracion APACHE me esta impidiendo la conexion.

Os estoy diciendo que una aplicacion en el mismo servidor donde estoy intentando conectar, si esta funcionando. Usando el mismo usuario&contraseña (por tanto no puede ser permisos en la BD) y usando el mismo server (tampoco firewall porque tambien conecta por el 3306)

Y tambien os estoy diciendo que conectandome por SSH de MI PC al SERVIDOR y ejecuto php db_remote.php FUNCIONA. Ya se que si me conecto, lo hago desde el entorno del servidor, pero por eso mismo, por SSH furrula.

Saludos.
  #9 (permalink)  
Antiguo 14/10/2011, 08:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema al conectar con una BD MySQL remota

Recuerda que los permisos en MySQL son por host, por lo que el mismo permiso en localhost, no es igual que un host remoto, debes de leer sobre usuarios y permisos de MySQL.

Es por eso que si ejecutas db_remote por SSH funciona porque MySQL revisa tu IP de origen, y cuando ve que es localhost aunque pongas la conexión por IP te permite conectarte, debes de darle un GRANT a tu usuario bajo el que estas queriendo conectar que te permita conectarte por la IP de tu PC local, o en dado caso darle permisos de conexión a cualquier ip (con el wildcard %).

Saludos.
  #10 (permalink)  
Antiguo 17/10/2011, 05:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 70
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema al conectar con una BD MySQL remota

Cita:
Iniciado por GatorV Ver Mensaje
Recuerda que los permisos en MySQL son por host, por lo que el mismo permiso en localhost, no es igual que un host remoto, debes de leer sobre usuarios y permisos de MySQL.

Es por eso que si ejecutas db_remote por SSH funciona porque MySQL revisa tu IP de origen, y cuando ve que es localhost aunque pongas la conexión por IP te permite conectarte, debes de darle un GRANT a tu usuario bajo el que estas queriendo conectar que te permita conectarte por la IP de tu PC local, o en dado caso darle permisos de conexión a cualquier ip (con el wildcard %).

Saludos.
Ya, pero vamos a ver ...

No estoy intentando conectar con una BD en local ... estoy conectando con una BD que esta en OTRO servidor.

SERVIDOR 1:
Programa en C# que conecta con la DB1
Apache y archivos db_local.php (que conecta con la DB2) y db_remote.php (que conecta con la DB1)
MySQL con la DB2 (que no la DB1)

SERVIDOR 2:
MySQL con la DB1 (la que conecta db_remote.php)

Pues bien ... repito ... el programa en C# corriendo en mono y el archivo db_remote.php ejecutado desde SSH con el comando PHP funciona (si lo hago ejecutando wget, no funciona). Pero si lo hago escribiendo la URL desde el navegador no funciona. Ambos tiran contra una DB que esta en un SEGUNDO SERVIDOR.

Pero para mis inri ... en el propio server hay un mysql instalado (pero no es contra el que estoy intentando entrar) y funciona (para probar cree db_local.php).

Los permisos son GRANT y con WILDCARD % (para eliminar posible problema de permisos). A parte que el programa en C# usa el mismo user y pass.

El problema no puede estar en otro lado que no sea la configuracion del apache, que es la estandard....

Mencionar que el servidor de base de datos no esta en red local con el servidor de apache, por si tiene algo que ver.

Saludos.

Etiquetas: bd, html, mysql, remota, usuarios
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 03:44.