Connessione al server MySQL remoto utilizzando PHP
-
20-09-2019 - |
Domanda
Sto tentando di connettersi a un server MySQL remoto dalla mia macchina locale virtualhost utilizzando il seguente codice:
$conn = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die(mysql_error());
mysql_select_db($dbname, $conn) or die(mysql_error());
Il mio problema è che io sono in grado di connettersi a livello locale, che riceve l'errore:
Impossibile connettersi al server MySQL su 'xxx.xxx.xxx.xxx' (10060)
Questo non è il caso quando si invia lo stesso file PHP per il server. Sono in grado di interrogare il database senza problemi a tutti.
Sono in grado di connettersi tramite linea di comando sia, ma posso accedere a cPanel che esclude la possibilità di mio IP di essere bandito accidentalmente.
Il mio server locale è in esecuzione PHP 5.2.9, il server remoto 5.2.12
Soluzione
- firewall del server deve essere messa a punto per consentire connessioni in entrata sulla porta 3306
- è necessario disporre di un utente in MySQL chi è autorizzato a connettersi da
%
(qualsiasi host) (vedi manuale per i dettagli)
Il problema attuale è la prima, ma subito dopo aver risolto vi sarà probabilmente ottenere il secondo.
Altri suggerimenti
E 'molto facile da collegare server MySQL remoto Utilizzo di PHP, quello che devi fare è:
-
Creazione di un utente MySQL nel server remoto.
-
privilegiare completa per l'utente.
-
connettersi al server utilizzando codice PHP (campione indicata sotto)
$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
Ho appena risolto questo tipo di problema. Quello che ho imparato è:
- dovrete modificare il
my.cnf
e impostare ilbind-address = your.mysql.server.address
sotto[mysqld]
- commentare campo skip-networking
- restart mysqld
-
controllare se è in esecuzione
mysql -u root -h your.mysql.server.address –p
-
creare un utente (usr o qualsiasi cosa) con% come dominio e garantire il suo accesso al database in questione.
mysql> CREATE USER 'usr'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON testDb.* TO 'monty'@'%' WITH GRANT OPTION;
-
Firewall aperto per la porta 3306 (è possibile utilizzare iptables. Assicuratevi di aprire la porta per eithe reveryone, o se siete in securety stretto, poi consentire solo l'indirizzo del client)
- firewall riavvio / iptables
si dovrebbe essere in grado di connettere il server MySQL formano lo script del server php client.
Questa forse non è la risposta alla question.But dell'inserzionista questo può utile per le persone il cui volto situazione stesso con me:
Il client ha due schede di rete, uno wireless e uno normale.
Il ping al server può essere succeed.However telnet serverAddress 3306
fallirebbe.
E si lamentano
Impossibile connettersi al server MySQL su 'xxx.xxx.xxx.xxx' (10060)
quando tenta di connettersi a server.So ho proibito le schede di rete normali.
E telnet serverAddress 3306
provato works.And allora funziona quando connettersi al server MySQL.