Question

Je tente de se connecter à un serveur MySQL distant de ma machine locale VirtualHost en utilisant le code suivant:

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

Mon problème est que je suis incapable de se connecter localement, recevoir l'erreur:

  

Impossible de se connecter au serveur MySQL sur 'xxx.xxx.xxx.xxx' (10060)

Ce n'est pas le cas quand je télécharge le même fichier PHP sur le serveur. Je suis en mesure d'interroger la base de données sans problème.

Je suis incapable de se connecter via la ligne de commande non plus, mais je peux accéder à cPanel, qui exclut la possibilité de mon IP étant interdit par inadvertance.

Mon serveur local est en cours d'exécution PHP 5.2.9, le serveur distant 5.2.12

Était-ce utile?

La solution

  • pare-feu du serveur doit être mis en place pour permettre les connexions incomming sur le port 3306
  • vous devez avoir un utilisateur MySQL qui est autorisé à se connecter à partir % (tout hôte) (voir manuel pour plus de détails)

Le problème actuel est le premier, mais juste après le résoudre, vous aurez probablement le second.

Autres conseils

Il est très facile de se connecter à distance MySQL Server à l'aide de PHP, ce que vous avez à faire est:

  1. Créer un utilisateur MySQL serveur distant.

  2. Donne le privilège complet à l'utilisateur.

  3. Connectez-vous à l'aide du code PHP serveur (échantillon donné ci-dessous)

$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

Je viens de résoudre ce genre de problème. Ce que j'ai appris est:

  1. vous devrez modifier le my.cnf et définissez le bind-address = your.mysql.server.address sous [mysqld]
  2. commenter champ skip-réseau
  3. restart mysqld
  4. vérifier si elle est en cours d'exécution

    mysql -u root -h your.mysql.server.address –p 
    
  5. créer un utilisateur (usr ou quoi que ce soit) avec% comme domaine et lui accorder l'accès à la base de données en question.

    mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION;
    
  6. pare-feu ouvert pour le port 3306 (vous pouvez utiliser iptables. Assurez-vous d'ouvrir le port pour eithe reveryone, ou si vous êtes en securety serré, puis autoriser uniquement l'adresse du client)

  7. pare-feu de redémarrage / iptables

vous devriez pouvoir maintenant se connecter former serveur mysql votre script serveur php client.

peut-être pas la réponse à question.But affiche de cette mai utile aux personnes dont le visage même situation avec moi:

Le client dispose de deux cartes réseau, un sans fil et un normal. Le ping au serveur peut être succeed.However telnet serverAddress 3306 échouerait. Et se plaindrait

  

Impossible de se connecter au serveur MySQL sur 'xxx.xxx.xxx.xxx' (10060)

lorsque vous essayez de vous connecter à server.So I interdit les cartes réseau normales. Et telnet serverAddress 3306 essayé works.And alors fonctionner lorsque la connexion au serveur MySQL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top