Czytam O „Dobrze „Nauka MySQL” i mówi, że możesz utworzyć użytkownika w MySQL, wykonując tylko to:
mysql> GRANT ALL ON *.* TO "jill"@"%.invyhome.com" IDENTIFIED BY "the_password"; Query OK, 0 rows affected (0.01 sec)
Ale jeśli spróbuję:
-> grant select on testgrounds.personas to ""@"localhost"; --> Error Code: 1133. Can"t find any matching row in the user table
Ale to się powiedzie, jeśli użyję hasła:
->grant select on testgrounds.personas to ""@"localhost" identified by "pass"; --> 0 row(s) affected
Musiałem przywrócić uprawnienia użytkownika root, ponieważ eksperymentowałem i zawiodłem ich, więc myślę, że zanim to zrobię, mógłbym faktycznie użyć instrukcji w książce (nie pamiętam 100%)
-> 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"
Czy coś jest nie tak z moją instalacją lub konfiguracją MySQL?
Odpowiedź
To nie jest problem z MySQL instalacji lub konfiguracji.
Nazwa każdego konta składa się zarówno z nazwy użytkownika, jak i nazwy hosta, na przykład „nazwa_użytkownika” @ „nazwa_hosta”, nawet jeśli nazwa hosta nie jest określona. Z Podręcznik MySQL:
Nazwy kont MySQL składają się z nazwy użytkownika i nazwy hosta. Umożliwia to tworzenie kont dla użytkowników o tej samej nazwie, którzy mogą łączyć się z różnych hostów.
Umożliwia to również MySQL przyznawanie różnych poziomów uprawnień w zależności od tego, który host, którego używają do łączenia.
Podczas aktualizowania dotacji dla konta, w którym MySQL nie rozpoznaje części hosta, zwróci kod błędu 1133, chyba że ma hasło identyfikujące to konto.
Ponadto, MySQL pozwoli na podanie nazwy konta tylko przez jego nazwę użytkownika, ale w tym przypadku jest ona traktowana jako „nazwa_użytkownika” @ „%”.