webentwicklung-frage-antwort-db.com.de

Verbindung zu einem entfernten MySQL-Server mithilfe von PHP

Ich versuche, von meinem lokalen Computer-Virtualhost aus mit folgendem Code eine Verbindung zu einem MySQL-Remote-Server herzustellen:

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

Mein Problem ist, dass ich keine lokale Verbindung herstellen kann. Ich erhalte den Fehler:

Es kann keine Verbindung zum MySQL-Server unter "xxx.xxx.xxx.xxx" (10060) hergestellt werden.

Dies ist nicht der Fall, wenn ich dieselbe PHP -Datei auf den Server hochlade. Ich kann die Datenbank ohne Probleme abfragen.

Ich kann auch keine Verbindung über die Befehlszeile herstellen, aber ich kann auf cPanel zugreifen, wodurch die Möglichkeit ausgeschlossen wird, dass meine IP-Adresse versehentlich gesperrt wird.

Mein lokaler Server führt PHP 5.2.9 aus, der Remote-Server 5.2.12

11
BenTheDesigner
  • die Firewall des Servers muss eingerichtet sein, um eingehende Verbindungen an Port 3306 zu ermöglichen
  • sie müssen einen Benutzer in MySQL haben, der von % (einem beliebigen Host) aus eine Verbindung herstellen darf (siehe manual für Details).

Das aktuelle Problem ist das erste, aber gleich nachdem Sie es gelöst haben, werden Sie wahrscheinlich das zweite Problem bekommen.

18
Bozho

Es ist sehr einfach, einen Remote-MySQL-Server anzuschließen. Mit PHP müssen Sie Folgendes tun:

  1. Erstellen Sie einen MySQL-Benutzer auf einem Remote-Server.

  2. Erteilen Sie dem Benutzer volle Berechtigung.

  3. Verbinden Sie sich mit dem Server mit PHP Code (Beispiel unten)

$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

Ich habe gerade ein solches Problem gelöst. Was ich gelernt habe, ist:

  1. sie müssen den my.cnf bearbeiten und den bind-address = your.mysql.server.address unter [mysqld] einstellen.
  2. kommentieren Sie das Überspringen-Netzwerk aus
  3. starten Sie mysqld neu
  4. prüfen Sie, ob es läuft

    mysql -u root -h your.mysql.server.address –p 
    
  5. erstellen Sie einen Benutzer (usr oder irgendetwas) mit% als Domäne, und gewähren Sie ihr Zugriff auf die betreffende Datenbank.

    mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION;
    
  6. Öffnen Sie die Firewall für Port 3306 (Sie können iptables verwenden. Stellen Sie sicher, dass Sie den Port für jede Version öffnen. Wenn Sie sich nicht sicher sind, lassen Sie nur die Client-Adresse zu.)

  7. starten Sie die Firewall/iptables erneut

sie sollten jetzt in der Lage sein, den MySQL-Server über Ihr Client-Server-PHP-Skript zu verbinden.

2
Debmalya Sinha

Dies ist möglicherweise nicht die Antwort auf die Frage des Posters. Aber dies kann für Leute hilfreich sein, die mit mir die gleiche Situation haben:

Der Client verfügt über zwei Netzwerkkarten, eine drahtlose und eine normale. Der Ping-Server kann erfolgreich sein. Der telnet serverAddress 3306 schlägt jedoch fehl. Und würde sich beschweren

Es kann keine Verbindung zum MySQL-Server unter "xxx.xxx.xxx.xxx" (10060) hergestellt werden.

wenn Sie versuchen, eine Verbindung zum Server herzustellen. Also verbot ich die normalen Netzwerkadapter. Und versuchte es mit telnet serverAddress 3306. Es funktioniert. Und dann funktioniert es, wenn Sie eine Verbindung zum MySQL-Server herstellen.

0
Shihe Zhang