2017-04-06 2 views
0

J'essaie d'accéder à une base de données à distance. Je suis capable d'y accéder depuis le serveur lui-même, mais j'ai besoin d'y accéder à distance et je le fais en utilisant XAMPP sur mon ordinateur.Accéder à la base de données MySQL à distance en utilisant PHP

J'ai ajouté la possibilité pour l'utilisateur de base de données d'accéder à la base de données à partir de mon ip (également essayé en utilisant%). Voici le code:

$servername = $websiteIP; //e.g. xx.xx.xxx.xxx, also tried website URL and URL to phpMyAdmin 
$username = 'username'; 
$password = 'password'; 
$dbname = 'dbname'; 
$port = '3306'; 
$conn = new mysqli($servername, $username, $password, $dbname); 
// also tried $conn = new mysqli($servername, $username, $password, $dbname, $port); 

Mais je reçois toujours cette erreur:

Warning: mysqli::mysqli(): (HY000/2002): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in ...

sauf quand j'utilise $ servername = $ urlToMyPhpAdmin; Puis-je obtenir cette erreur:

Warning: mysqli::mysqli(): MySQL server has gone away in xxx on line 10. Warning: mysqli::mysqli(): Error while reading greeting packet. PID=102448 in xxx on line 10. Warning: mysqli::mysqli(): (HY000/2006): MySQL server has gone away in xxx on line 10

Qu'est-ce que je manque?

+0

Avez-vous vérifié le port d'arrivée? Vérifiez une fois en désactivant le pare-feu de votre serveur de base de données (iptable/Selinux). – webDev

+0

@webDev Désolé, je ne suis pas sûr de savoir ce qu'est un port entrant. Et je suis assez sûr que je n'ai pas la permission de désactiver le pare-feu. – Andri

Répondre

0

La base de données est-elle sur le même serveur que le site Web? Vous pouvez avoir besoin de l'adresse IP ou de l'adresse de l'hôte de la base de données, et non du site Web (ou de PHPMyAdmin). Je voudrais aller dans phpMyAdmin et exécutez la requête suivante, tirée de this réponse:

select * from GLOBAL_variables where variable_name like 'hostname';

et essayez d'utiliser le résultat de ce que votre $servername

+0

J'obtiens une erreur lorsque j'utilise votre SQL, mais cela fonctionne: SHOW VARIABLES WHERE nom_variable = 'nom_hôte' Est-ce la même chose? Le résultat est une chaîne de caractères ($ chaîne). Ensuite, j'utilise ce code: echo gethostbyname ($ string) et cela donne une adresse IP identique à celle du site web. – Andri

+1

Ok cool donc vous voulez certainement utiliser cette adresse IP comme votre $ nom_serveur. Je voudrais jeter un coup d'œil sur [ce] site web (https://support.rackspace.com/how-to/mysql-connect-to-your-database-remotely/) et m'assurer que l'utilisateur que vous avez configuré a bien privilèges de se connecter à distance, et peut-être essayer d'exécuter localement mysql pour se connecter à la base de données distante pour s'assurer qu'il peut accepter une connexion à distance – dave

+0

Semble que vous m'avez sur la bonne voie. Si j'utilise l'adresse IP comme nom de serveur $ (pas localhost) et que je me connecte localement depuis le serveur distant, tout fonctionne correctement. Mais quand je déplace le même code vers mon serveur XAMPP, j'obtiens l'erreur. Donc je suppose que même si le panneau de contrôle pour le serveur distant me permet de changer l'hôte de localhost en ip pour chaque utilisateur, je ne peux toujours pas y accéder. – Andri