Localhost vs. 127.0.0.1 : l'étrange cas des privilèges MySQL
Lorsque vous travaillez avec MySQL, il est courant de rencontrer une disparité apparemment déroutante entre les termes « localhost » et « 127.0.0.1 ». Cette différence se manifeste dans le contexte de l'octroi de privilèges aux utilisateurs au sein du système de base de données.
Pour illustrer, considérons l'exemple suivant :
$ mysql -u root -h 127.0.0.1 -e 'show tables' created_from_host; +-----------------------------+ | Tables_in_created_from_host | +-----------------------------+ | test | +-----------------------------+ $ mysql -u root -h localhost -e 'show tables' created_from_host; ERROR 1049 (42000): Unknown database 'created_from_host'
Cette différence se produit parce que MySQL fait la différence entre les connexions établies à l'aide d'un nom d'hôte (par exemple, « localhost ») et connexions établies via un socket (par exemple, « 127.0.0.1 »). La méthode socket, utilisée lorsqu'aucun nom d'hôte n'est spécifié ou lors de la connexion avec 'localhost', utilise un socket local pour communiquer avec le serveur de base de données.
Cette distinction devient significative dans le domaine des privilèges utilisateur. Voici un guide simple pour accorder TOUS les privilèges sur TOUTES les bases de données de TOUS les hôtes pour 'root' :
Connectez-vous à MySQL en utilisant le compte root :
$ mysql -u root -p
Exécutez la commande suivante pour accorder le privilèges :
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Vinez les privilèges pour garantir que les modifications prennent effet :
FLUSH PRIVILEGES;
En suivant ces étapes, vous pouvez vous assurer ce « root » aura un accès illimité à votre système de base de données depuis n'importe quel hôte, qu'il soit connecté via « localhost » ou '127.0.0.1'.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!