Connessione a MySQL remoto utilizzando l'errore PHP

Sto cercando di connettermi a un server remoto, quindi eseguo questo script di test:

$servername = "remotedomain.com"; $username = "dbusername"; $password = "dbpassword"; // Create connection $conn = new mysqli($servername, $username, $password); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; 

Tuttavia, ottengo questa risposta:

 Connection failed: Access denied for user 'dbusername'@'www.mydomain.com' (using password: YES) 

Non sta cercando di connettersi al server remoto, sta cercando di connettersi al mio server locale, qualcuno sa perché?

Significato del messaggio di errore

L'errore ti dice che l'account che stai tentando di utilizzare per stabilire una connessione non ha accesso. (Ciò può essere dovuto all'utilizzo di valori errati o alla mancanza di accesso.) Dopo aver corretto i valori che si stanno utilizzando, è necessario controllare l'account direttamente nel database e verificare che in realtà consenta connessioni remote. (A volte sono impostati per consentire le connessioni locali per impostazione predefinita. Vedere di seguito.)

Inoltre, l'account del database non è uguale a un account sistema / sistema operativo; sono indipendenti dagli account utente del sistema operativo, quindi controlla anche quelli.

Ad esempio, una string di connessione dovrebbe essere più simile a questa: [email protected] , senza la parte www .

Conferma di accesso all'account del database

Questo è ciò che dovresti controllare sul lato del database per verificare se il tuo account ha il privilegio di connessione remota:

 mysql> use mysql; Database changed mysql> select User, Host from user; +------------------+-----------+ | User | Host | +------------------+-----------+ | ray | % | <<--- allows remote conns; wildcard accepts any host | root | 127.0.0.1 | | root | ::1 | <<--- does NOT allow remote conns | root | localhost | +------------------+-----------+ 6 rows in set (0.00 sec) 

Si noti che quelli che non hanno il carattere jolly % e invece hanno un riferimento all'host locale, per nome o indirizzo IP, riceveranno un messaggio di errore di accesso negato. Per esempio:

 ➜ ~ mysql -h data-hive.local -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'main-hive' (using password: YES) 

Per giocare con le impostazioni di accesso all'account, dovresti dare un'occhiata alla documentazione di MySQL .

Utilizzare l'IP / subnet dell'host anziché il nome del dominio. controlla anche per assicurarsi che la root abbia accesso da host / IP diversi da localhost.

 mysql> use mysql; mysql> SELECT host FROM user WHERE user = 'dbusername'; 

devi concedere le autorizzazioni all'IP da cui ti stai collegando.

 mysql> GRANT SELECT, INSERT ON dbname.* TO 'dbusername'@'10.0.0.1'; 

Sostituire

dbname

con il database a cui si desidera accedere (o inserire un carattere jolly), quindi sostituire l'IP con l'indirizzo o la substring dalla quale si connette il client.