2017-09-10 4 views
-3

Je voudrais vous connecter à une base de données avec une adresse IP externe de l'ordinateur sur lequel le serveur, par exemple:Comment puis-je me connecter à une base de données sur une ip externe?

<? $db_host = "xxx.xxx.xxx.xxx" //external ip 
$db_user = "user"; $db_password = "password"; $db_database = "database"; 
$conn = "mysql:host=$db_host;dbname=$db_database;charset=utf8mb4"; try {$db = new PDO($conn , "$db_user", "$db_password");}catch(PDOException $e) {echo 'Error: '.$e->getMessage();}?> 

Alors, pouvez-vous faire cela? Et si oui, comment puis-je le faire? Merci à tous pour l'aide;)

Ps: Désolé pour mon mauvais anglais

+0

Où se trouve ce serveur? Est-ce une société d'hébergement? le nuage; un serveur que vous possédez, etc. – w0051977

+0

Avez-vous une erreur lorsque vous avez essayé cela? – C2486

+0

@ w0051977 Le serveur est mon Rpi – Superjolly002

Répondre

0

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

  1. Créer une Utilisateur MySQL sur un serveur distant.

  2. Donnez le privilège complet à l'utilisateur:

    • pare-feu du serveur doit être mis en place pour activer les connexions incomming sur le port 3306
    • vous devez avoir un utilisateur MySQL qui est autorisé à se connecter à partir % (tout hôte) (voir manual pour plus de détails)
  3. Se connecter au serveur en utilisant le code PHP (exemple 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 
+0

pour éditer les privilèges mysql: mysql> CREATE USER 'usr' @ '%' IDENTIFIÉ PAR 'some_pass'; mysql> ACCÉDER À TOUS LES PRIVILEGES SUR testDb. * TO 'monty' @ '%' WITH GRANT OPTION; –

+0

Les fonctions obsolètes mysql_ * sont mauvaises dans la réponse. –

+0

J'ai fait le changement mais je l'ai fait: "Deprecated: mysql_connect(): L'extension mysql est obsolète et sera supprimée à l'avenir: utiliser mysqli ou PDO" et "Attention: mysql_connect(): La connexion a expiré" – Superjolly002

0

Vérifiez d'abord votre adresse IP publique [Public Ip Means External Ip Address] à partir d'ici: https://www.whatismyip.com/

Et maintenant Vérifiez votre système adresse IP (adresse IP interne en utilisant ipconfig dans cmd)

deux Sont Differect Donc vous avez besoin d'utilisé Public Ip Address Lequel vous obtenez de https://www.whatismyip.com

Maintenant, vous devez donner l'autorisation d'accès à la base de données pour l'adresse IP spécifique, par défaut Mysql ne permet pas d'y accéder SO vous devez tirer cette commande pour.

comme ceci:

SQL> GRANT ALL PRIVILEGES ON database.* TO 'user'@'your_database_pc_public_ip' IDENTIFIED BY 'newpassword'; 

Exemple ::

SQL> GRANT ALL PRIVILEGES ON database.* TO 'any_name'@'public_ip' IDENTIFIED BY 'any_password'; 

alors son travail bien pour vous :)

0
<?php 
    $dbServerName = "DNS Name or ip address"; 
    $dbUsername = "username"; 
    $dbPassword = "password"; 
    $dbName = "dbname"; 

    // create connection 
    $conn = new mysqli($dbServerName, $dbUsername, $dbPassword, $dbName); 

    // check connection 
    if ($conn->connect_error) 
    { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    echo "Connected successfully"; 
?> 
+0

le changement mais j'ai fait: " Attention: mysqli :: mysqli(): (HY000/2002): La connexion a expiré" – Superjolly002