2010-09-21 16 views
3

J'ai deux serveurs (machines virtuelles - je peux connecter à distance à ces) - serveur 1 et le serveur 2.Connexion à MySQL sur un serveur différent

Sur le serveur 1 Je garde mes pages web, et sur le serveur 2, Je garde les bases de données.

Je suis actuellement en train de se connecter à une base de données sur le serveur 2 du serveur 1.

Voici mon code php:

<?php 
      $dbhost = 'xxx.xx.xx.xx:xxxx'; 
      $dbuser = 'xxxxxx'; 
      $dbpass = 'xxxxxx'; 

      $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql' . mysql_error()); 


      $dbname = 'database'; 
      mysql_select_db($dbname); 
?> 

Voici le message d'erreur que je reçois quand je tente de me connecter:

Access denied for user 'xxxxxx'@'server1' (using password: YES) 

je l'ai trouvé un peu déconcertant que dit @ server1 étant donné que je suis en train de se connecter au serveur 2. quelqu'un peut-il offrir des idées?

Merci

PS: Ils sont tous les deux sur les fenêtres 2008

+0

Cette question peut vous aider: [Question] [1] [1]: http://stackoverflow.com/questions/14438544/connect-to-mysql-on-a-different-server – pollux1er

Répondre

3

MySQL factorise le nom d'hôte du client qui se connecte lorsqu'il détermine si l'accès doit ou non être accordé. Un nom d'utilisateur donné peut être autorisé à se connecter à partir de la même machine qui héberge la base de données (c'est-à-dire localhost) mais ne peut pas se connecter lorsqu'il est utilisé à partir d'un système distant.

Dans votre cas, l'utilisateur 'xxxxxx' n'est pas autorisé à se connecter à partir de 'server1'. Vous pouvez accorder des droits de connexion à l'utilisateur 'xxxxxx' de tous les hôtes ('%'). Cependant, il serait plus sûr de limiter les droits de connexion de votre compte à l'hôte spécifique ('server1') ou à la gamme d'hôtes ('% .mydomain.com' ou '144.155.166.0/255.255.255.0') dont il a besoin à utiliser.

Pour plus d'informations sur cet aspect du processus d'authentification MySql, voir http://dev.mysql.com/doc/refman/5.0/en/connection-access.html.

+0

Merci Ben, c'est la réponse la plus détaillée, donc je vais cocher ça. Merci à tous ceux qui ont répondu! – 109221793

2

"Accès refusé pour l'utilisateur 'xxxxxx' @ 'server1'" signifie que server1 n'ont pas accès à Server2. Vous devez ajouter un nouvel utilisateur sur server2 qui peut se connecter à partir de server1 (nom d'hôte: server1);

2

Vous devez donner des droits pour cette machine

Check it here

2

Supprimer cet utilisateur et créer une nouvelle avec 'xxxxxx' @ '%'. Faites cela sur les deux serveurs. @ '%' indique que l'utilisateur peut se connecter depuis n'importe où.