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
%
(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.
Es ist sehr einfach, einen Remote-MySQL-Server anzuschließen. Mit PHP müssen Sie Folgendes tun:
Erstellen Sie einen MySQL-Benutzer auf einem Remote-Server.
Erteilen Sie dem Benutzer volle Berechtigung.
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
Ich habe gerade ein solches Problem gelöst. Was ich gelernt habe, ist:
my.cnf
bearbeiten und den bind-address = your.mysql.server.address
unter [mysqld]
einstellen.prüfen Sie, ob es läuft
mysql -u root -h your.mysql.server.address –p
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;
Ö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.)
sie sollten jetzt in der Lage sein, den MySQL-Server über Ihr Client-Server-PHP-Skript zu verbinden.
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.