Mysql
 sql >> Base de données >  >> RDS >> Mysql

Créer un utilisateur MySQL et une base de données à partir de PHP

Cette réponse a été modifiée plusieurs fois sur la base des nouvelles informations fournies par l'OP

La racine est-elle réellement autorisée se connecter au serveur à partir de l'hôte à partir duquel vous vous connectez ? Si la chaîne d'erreur renvoie le nom canonique du serveur, il y a de fortes chances que 'localhost' ne pointe pas vers 127.0.0.1 :

Cela devrait renvoyer 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 fournies dans les commentaires)

Si vous vous connectez depuis un hôte totalement différent, vous devez indiquer à MySQL [email protected]_hostname_or_ip est autorisé à se connecter et dispose des privilèges appropriés pour créer une base de données et des utilisateurs.

Vous pouvez le faire assez facilement en utilisant 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 conseillerais de ne pas nommer cet utilisateur 'root' , créez simplement 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 le CREATE USER la syntaxe peut être trouvé ici , GRANT ici .

Modifier

Si vous utilisez MySQL 4 - CREATE n'est pas une option. Vous utiliseriez simplement GRANT (4.1 Docs On User Management )

Modifier

Si vous utilisez C-Panel, juste utiliser l'API . Bien que oui, il a ses bizarreries, il est plus facile de maintenir des éléments qui l'utilisent plutôt que des solutions de contournement ad hoc. Beaucoup d'applications réussies l'utilisent sans problème. Comme toute autre API, vous devez rester au courant des modifications lors de son utilisation.