2009-12-20 16 views
10

Estoy intentando conectar con un servidor remoto MySQL desde mi máquina local host virtual usando el siguiente código:Conectando con el servidor remoto MySQL con PHP

$conn = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die(mysql_error()); 
     mysql_select_db($dbname, $conn) or die(mysql_error()); 

Mi problema es que soy incapaz de conectar a nivel local, que recibe el error:

Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10060)

No es el caso cuando cargo el mismo archivo PHP en el servidor. Puedo consultar la base de datos sin ningún problema.

No puedo conectarme a través de la línea de comandos, pero puedo acceder a cPanel, lo que excluye la posibilidad de que mi IP sea prohibida accidentalmente.

Mi servidor local se está ejecutando PHP 5.2.9, el servidor remoto 5.2.12

Respuesta

16
  • servidor de seguridad del servidor debe estar puesta a punto para permitir incomming conexiones en el puerto 3306
  • debe tener un usuario en MySQL que se le permite conectarse desde % (cualquier host) (ver manual para más detalles)

el problema actual es el primero, pero justo después de resolver que es probable que obtener el segundo.

+0

Creé un usuario comodín en MySQL remoto cuando surgió el problema por primera vez, pensando que mi IP podría haber cambiado (lo que no debería haber sido). Pude conectarme al mismo servidor hace unos días, así que dudo que sea un problema de firewall. – BenTheDesigner

+3

intente con telnet xx.xx.xx.xx 3306. Si no se conecta, es un problema de red – Bozho

+0

@Bozho: no se puede establecer Telnet en 3306. Como es servidor compartido, tendré que hablar con el host como yo no tienen acceso a su red. – BenTheDesigner

3

Es muy fácil de conectar MySQL servidor remoto mediante PHP, lo que tiene que hacer es:

  1. crear un usuario de MySQL en el servidor remoto.

  2. Otorga privilegios personales al usuario.

  3. Conectar con el servidor utilizando código de PHP (muestra dada continuación)

$link = mysql_connect('your_my_sql_servername or IP Address', 'new_user_which_u_created', 'password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

echo 'Connected successfully'; 

mysql_select_db('sandsbtob',$link) or die ("could not open db".mysql_error()); 
// we connect to localhost at port 3306 
2

Acabo de resolver este tipo de problema. Lo que he aprendido es:

  1. que tendrá que editar el my.cnf y establezca el bind-address = your.mysql.server.address bajo [mysqld]
  2. comentario cabo skip-networking campo
  3. reiniciar mysqld
  4. verificación de si se está ejecutando

    mysql -u root -h your.mysql.server.address –p 
    
  5. crear un usuario (usr o cualquier cosa) con% como dominio yg denunciar su acceso a la base de datos en cuestión.

    mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass'; 
    mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION; 
    
  6. abra el firewall para el puerto 3306 (puede usar iptables.asegúrese de abrir el puerto de eithe reveryone, o si usted está en securety apretado, entonces sólo permiten la dirección del cliente)

  7. cortafuegos reinicio/iptables

usted debe ser capaz de conectar ahora forman su servidor MySQL servidor cliente script php.

0

Esto quizás no sea la respuesta a question.But del cartel de esto puede útil para las personas cuyo rostro misma situación conmigo:

El cliente tiene dos tarjetas de red, un uno inalámbrico y uno normal. El ping al servidor se puede realizar correctamente. Sin embargo, telnet serverAddress 3306 fallará. Y se queja

Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10060)

cuando intento para conectar con server.So me ha prohibido los adaptadores de red normales. Y probado telnet serverAddress 3306 funciona. Y luego funciona cuando se conecta al servidor MySQL.

Cuestiones relacionadas