Ausgesperrt, aus dem eigenen Datenbankserver
dem einen oder anderen ist heute nachmittag vielleicht die mehrfache kurze nicht-verfuegbarkeit dieser seite aufgefallen.. der grund war ein ganz einfach:
ich wollte einen user in mysql loeschen und habe mich in phpmyadmin verklickt.. und leider den benutzer root erwischt. da ich natuerlich "benutzer loeschen und zugriffstabellen neu laden" angeklickt hatte, war ich postwendend ausgesperrt.
nachdem ich kurz das gelaechter der arbeitskollegen auf meiner seite hatte, kam dann auch ein konstruktiver vorschlag.. man kann mysql mit dem parameter --skip-grant-tables starten, dann kommt man auch ohne passwort in die konsole. zusaetzlich sollte man dann auch --skip-networking benutzen, damit nicht jedem tuer und tor geoeffnet werden.
ich wollte einen user in mysql loeschen und habe mich in phpmyadmin verklickt.. und leider den benutzer root erwischt. da ich natuerlich "benutzer loeschen und zugriffstabellen neu laden" angeklickt hatte, war ich postwendend ausgesperrt.
nachdem ich kurz das gelaechter der arbeitskollegen auf meiner seite hatte, kam dann auch ein konstruktiver vorschlag.. man kann mysql mit dem parameter --skip-grant-tables starten, dann kommt man auch ohne passwort in die konsole. zusaetzlich sollte man dann auch --skip-networking benutzen, damit nicht jedem tuer und tor geoeffnet werden.
mysqld_safe --skip-grant-tables --skip-networking &
in der konsole angekommen muss man dann root wieder anlegen.. das muss allerdings "manuell" per direktem insert in die mysql.user tabelle passieren, denn --skip-grant-tables deaktiviert konsequenterweise grant gleich mit. praktischerweise hat die user tabelle auch kaum unendlich viele spalten und es reicht auch nicht aus, nur einen user mit super_priv='Y' oder grant_priv='Y' anzulegen und dann im normal gestarteten mysql einfachgrant all privileges on *.* to root@localhost identified by 'passwort';
auszufuehren.. nein, man muss wirklich alle priv-spalten auf 'Y' setzen. man bastelt sich also folgenden befehl zusammen:use mysql;
insert into user ( host, user, password, select_priv, insert_priv, update_priv, delete_priv, create_priv, drop_priv, reload_priv, shutdown_priv, process_priv, file_priv, grant_priv, references_priv, index_priv, alter_priv, show_db_priv, super_priv, create_tmp_table_priv, lock_tables_priv, execute_priv, repl_slave_priv, repl_client_priv ) values ( 'localhost', 'root', password('passwort'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y' );
geschrieben am 29. September 2005, 17:09 in geeky