web-dev-qa-db-fra.com

Connexion au serveur MySQL distant en utilisant PHP

J'essaie de me connecter à un serveur MySQL distant à partir de mon ordinateur local 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 ne peux pas me connecter localement, recevant l'erreur:

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

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

Je ne parviens pas non plus à me connecter via la ligne de commande, mais je peux accéder à cPanel, qui exclut toute possibilité d'interdiction accidentelle de mon adresse IP.

Mon serveur local exécute PHP 5.2.9, le serveur distant 5.2.12.

11
BenTheDesigner
  • le pare-feu du serveur doit être configuré pour permettre les connexions entrantes sur le port 3306
  • vous devez avoir un utilisateur MySQL autorisé à se connecter à partir de % (n'importe quel hôte) (voir manual pour plus de détails)

Le problème actuel est le premier, mais juste après que vous l'ayez résolu, vous obtiendrez probablement le second.

18
Bozho

Il est très facile de connecter un serveur MySQL distant. Avec PHP, vous devez:

  1. Créez un utilisateur MySQL sur un serveur distant.

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

  3. Connectez-vous au serveur en utilisant le code PHP (exemple 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
3
Ajit Kumar KV

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

  1. vous devrez éditer le my.cnf et définir le bind-address = your.mysql.server.address sous [mysqld]
  2. commenter le champ de saut de réseautage
  3. redémarrer mysqld
  4. vérifier si ça marche

    mysql -u root -h your.mysql.server.address –p 
    
  5. créer un utilisateur (usr ou autre) 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. ouvrez le pare-feu pour le port 3306 (vous pouvez utiliser iptables. Assurez-vous d’ouvrir le port pour reveryone, ou si vous êtes en sécurité, autorisez uniquement l’adresse du client)

  7. redémarrer le pare-feu/iptables

vous devriez pouvoir maintenant connecter le serveur mysql à partir de votre script php de serveur client.

2
Debmalya Sinha

Ce n'est peut-être pas la réponse à la question de l'affiche. Mais cela peut être utile aux personnes qui ont la même situation avec moi:

Le client a deux cartes réseau, une sans fil et une normale . Le ping au serveur peut être réussi.Toutefois, telnet serverAddress 3306 échouerait. Et se plaindre

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

lorsque j'essaie de me connecter à server.Alors, j’ai interdit les adaptateurs réseau normaux . Et essayé telnet serverAddress 3306 ça marche.

0
Shihe Zhang