Ik lees O “Relly “MySQL leren” en er staat dat je een gebruiker in MySQL kunt maken door gewoon dit te doen:
mysql> GRANT ALL ON *.* TO "jill"@"%.invyhome.com" IDENTIFIED BY "the_password"; Query OK, 0 rows affected (0.01 sec)
Maar als ik het probeer:
-> grant select on testgrounds.personas to ""@"localhost"; --> Error Code: 1133. Can"t find any matching row in the user table
Maar het lukt als ik een wachtwoord gebruik:
->grant select on testgrounds.personas to ""@"localhost" identified by "pass"; --> 0 row(s) affected
Ik moest de rechten herstellen voor user root omdat ik aan het experimenteren was en ik ze verprutste, dus ik denk voordat ik dat deed, ik de verklaring in het boek daadwerkelijk zou kunnen gebruiken (ik herinner me 100% niet meer)
-> select current_user; --> "root@localhost" -> show grants; --> "GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"localhost\" IDENTIFIED BY PASSWORD \"*4ACFE3202A5FF5CF467898FC58AAB1D615029441\" WITH GRANT OPTION" --> "GRANT ALL PRIVILEGES ON `testgrounds`.* TO \"root\"@\"localhost\" WITH GRANT OPTION" --> "GRANT PROXY ON \"\"@\"\" TO \"root\"@\"localhost\" WITH GRANT OPTION"
Is er iets mis met mijn MySQL-installatie of -configuratie?
Antwoord
Dit is geen probleem met MySQL installatie of configuratie.
Elke accountnaam bestaat uit zowel een gebruiker als een hostnaam, zoals “gebruikersnaam” @ “hostnaam”, zelfs als de hostnaam niet is opgegeven. Van de MySQL-referentiehandleiding:
MySQL-accountnamen bestaan uit een gebruikersnaam en een hostnaam. Dit maakt het mogelijk om accounts aan te maken voor gebruikers met dezelfde naam die verbinding kunnen maken vanaf verschillende hosts.
Hierdoor kan MySQL ook verschillende machtigingsniveaus toekennen, afhankelijk van welke host die ze gebruiken om verbinding te maken.
Bij het bijwerken van grants voor een account waar MySQL “het hostgedeelte niet herkent, zal het een foutcode 1133 retourneren tenzij het een wachtwoord heeft om dit account te identificeren.
Ook, MySQL staat toe dat een accountnaam alleen wordt gespecificeerd door de gebruikersnaam, maar in dit geval wordt het behandeld als “gebruikersnaam” @ “%”.