Cette réponse a été modifiée à plusieurs reprises sur la base de nouvelles informations fournies par l'OP
est la racine en fait a permis de se connecter au serveur de l'hôte que vous connectez à partir? Si la chaîne d'erreur retourne le nom canonique du serveur, il y a une très bonne chance que « localhost » ne pointe pas vers 127.0.0.1:
« Accès refusé pour l'utilisateur 'root'@'MY.SERVER .HOST.NAME » à base de données « nom_base » »
Cela devrait faire écho quelque chose comme « Accès refusé pour l'utilisateur « root » @ localhost ' », pas le nom du serveur.
Essayez:
$con = mysql_connect("127.0.0.1","root","pass");
Modifier (Après plus d'informations fournis dans les commentaires)
Si vous connectez d'un hôte totalement différent, vous devez dire MySQL [email protected]_hostname_or_ip
est autorisé à se connecter, et possède les privilèges appropriés pour créer une base de données et des utilisateurs.
Vous pouvez le faire en utilisant assez facilement phpmyadmin (sur le serveur MySQL), ou une requête comme:
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 ;
Je conseille de ne pas nommer cet utilisateur « root », il suffit de créer un utilisateur avec tous les privilèges globaux nécessaires. Dans l'exemple, j'ai utilisé 192.168.1.1, qui pourrait facilement être un nom d'hôte, assurez-vous simplement que le DNS est correctement configuré. Spécifiez l'hôte pour qu'il corresponde exactement à tel qu'il apparaît dans les journaux lorsque vous vous connectez au serveur distant.
Vous pouvez également ajuster les limites au goût. Plus d'informations sur la syntaxe CREATE USER
peut être found here, GRANT
here.
Modifier
Si vous utilisez MySQL 4 - CREATE est pas une option. Vous utilisez simplement GRANT (4.1 Docs On User Management)
Modifier
Si vous utilisez C-Panel, juste use the API. Bien que oui, il a ses bizarreries, il est plus facile de maintenir des choses qui l'utilisent plutôt que des contournements ad hoc. Beaucoup d'applications réussies l'utilisent sans problème. Comme toute autre API, vous devez rester au courant des changements lors de son utilisation.
Juste remarqué, j'ai copié mon code faux ci-dessus. Ce script est en cours d'exécution sur 1 serveur et essaie d'installer la base de données sur un autre donc il ne se connecte pas à localhost de toute façon – robjmills
@snaken - Mise à jour ma réponse –
en cas de problème avec l'utilisateur J'ai retiré l'utilisateur et j'ai essayé de les recréer avec votre code, mais je reçois une erreur de syntaxe? – robjmills