Questa risposta è stata modificata più volte in base alle nuove informazioni fornite dall'OP
Il root è effettivamente consentito connettersi al server dall'host da cui ci si connette? Se la stringa di errore restituisce il nome canonico del server, è molto probabile che 'localhost' non punti a 127.0.0.1 :
Dovrebbe fare eco qualcosa come "Accesso negato per l'utente 'root'@localhost'", non il nome del server.
Prova:
$con = mysql_connect("127.0.0.1","root","pass");
Modifica (Dopo ulteriori informazioni fornite nei commenti)
Se ti stai connettendo da un host completamente diverso, devi dire a MySQL [email protected]_hostname_or_ip
è autorizzato a connettersi e dispone dei privilegi appropriati per creare un database e utenti.
Puoi farlo abbastanza facilmente usando phpmyadmin (sul server MySQL) o una query come:
CREATE USER 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Consiglierei di non nominare questo utente 'root' , basta creare un utente con tutti i privilegi globali necessari. Nell'esempio, ho usato 192.168.1.1, che potrebbe facilmente essere un nome host, assicurati solo che il DNS sia impostato correttamente. Specifica l'host da abbinare esattamente come appare nei log quando ti connetti al server remoto.
Potresti anche voler regolare i limiti a piacere. Maggiori informazioni su CREATE USER
la sintassi può essere trovata qui
, GRANT
qui
.
Modifica
Se si utilizza MySQL 4 - CREATE non è un'opzione. Dovresti semplicemente usare GRANT (4.1 Docs on User Management )
Modifica
Se si utilizza C-Panel, basta utilizza l'API . Anche se sì, ha le sue stranezze, è più facile mantenere le cose che lo usano piuttosto che soluzioni ad hoc. Molte applicazioni di successo lo usano senza problemi. Come qualsiasi altra API, devi essere sempre aggiornato sulle modifiche quando la utilizzi.