Když MySQL ignoruje existující uživatele

Při testování automatické konfigurace MySQL jsem narazil na zajímavý problém: vytvořím uživatele a přiřadím mu heslo klauzulí IDENTIFIED BY, ovšem když se na něj s tímto heslem pokusím přihlásit, autentizace selže. Bez hesla to ovšem jde ! Kontroloval jsem hodnotu v tabulce mysql.user, zkoušel jsem ji nastavit ručně, vše sedí.

První indicie nastala, když jsem se “přihlásil” na nově vytvořeného uživatele bez hesla a zkusil jej změnit příkazem SET PASSWORD:

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

což spolu s

Any client that has connected to the server using a non-anonymous account can change the password for that account.

z dokumentace nasvědčuje, že jsem se asi nepřihlásil. Zrovna tak to funguje s mysql -u xyz. Proč, ovšem, je přihlášení anonymní, i když uživatel v tabulce user je, jsem nevěděl. Prohlédl jsem si ji ještě jednou, zdali nenajdu třeba nějaký “enabled” sloupec či co, a něco mě zarazilo: řádky s prázdným jménem (sloupec user).

Po jejich prostém smazání vše funguje jak má. Všechny uživatelské účty pod nimi byly nedostupné a přihlášení na ně se provedlo anonymně, netuším proč, natož kde se tam vzaly. Každopádně, až se vám stane něco podobného, prostě

DELETE FROM mysql.user WHERE user=''

Leave a Reply

Aktuální informace o webhostingu Multihost.cz