Julian von Mendel: (MySQL) Root-User defekt - korrigieren ohne Zugriffsrechte?!

Hi,

hab ein kleines aber trotzdem blödes Problem *g*. Ich hab eine MySQL-Datenbank, lief alles. Jetzt wollte ich die Hosts abändern, die sich mit dem MySQL-User root einloggen dürfen. Vorher hatte ich den User zweimal in der Privilege-Table, einmal mit dem Host localhost und einmal mit dem Domainnamen von meinem Server. Jetzt hab ich den Domainnamen durch % (nur zum Testen...) ersetzt. Ich weiß nicht warum - aber ich komme nicht mehr auf meinen Server als root drauf. Da ich für phpMyAdmin einen readonly-User eingerichtet habe kann ich über den mir die Rechte nochmal ansehen: Es gibt einmal root@% und einmal root@localhost, beide mit allen Rechten. Ich verstehe absolut nicht, warum ich mich trotzdem mit keinem von beiden, weder über das Internet noch lokal über ssh einloggen kann. Überschreibt der 2. evtl. den 1.? Oder habe ich einen anderen dummen Fehler drin? Unabhängig davon: Wie korrigiere ich dieses Problem, wo ich doch jetzt keinen anderen User mehr eingerichtet habe, der volle Zugriffsrechte hat?

Vielen Dank
Julian

--
"Real programmers can write assembly code in any language." - Larry Wall
  1. hi julian!

    ich hatte vor kurzem das selbe problem.
    ich bin leider auf keine andere lösung gekommen als die tables zu sichern und mysql direkt am server neu zu installieren...

    falls du ne andere lösung findest, bitte posten, würd mich interessieren...

    lg,
    der doktor

    1. Hi,

      ich hatte vor kurzem das selbe problem.
      ich bin leider auf keine andere lösung gekommen als die tables zu sichern und mysql direkt am server neu zu installieren...

      falls du ne andere lösung findest, bitte posten, würd mich interessieren...

      Naja - die MySQL-Datenbank mit den Userdaten (/var/lib/mysql/mysql) zu entfernen ist sicher die einfachste Methode. Im Notfall hab ich wohl auch noch ein Backup von gestern (welches sich leider nur komplett einspielen lässt *grml*). Aber vermutlich kann man auch mit irgendeinem Konsolentool den Root-User restaurieren bzw. sich einen neuen privilegierten User erstellen, hoffe ich?

      Schöne Grüße
      Julian

      --
      "Real programmers can write assembly code in any language." - Larry Wall
  2. Moin!

    http://www.it-schule.de/diskussion.php?board_id=2

    • beende den Server
    • Wichtig: ziehe den Netzstecker oder sorge dafür, dass niemand anderes via Netz auf den Port 3306 zugreifen kann, sonst kann es ziemlich böse enden.
    • Starte  den Server es einfach mit: mysqld --skip privileges
    • logge Dich ohne Benutzername ein: mysql
    • wechsle in die mysql- Datenbank: use mysql;

    Bei vergessenem root-Passwort:

    • gib dem root ein neues Passwort:
       update user set passwort=password("neues_passwort") where user="root";

    Bei verhuntzten Rechten:

    UPDATE user
    SET
    select_priv='Y',
    insert_priv='Y'
    update_priv='Y',
    delete_priv='Y',
    create_priv='Y',
    drop_priv='Y',
    reload_priv='Y',
    shutdown_priv='Y',
    process_priv='Y',
    file_priv='Y',
    grant_priv='Y',
    references_priv='Y',
    index_priv='Y',
    alter_priv='Y',
    show_db_priv='Y',
    super_priv='Y',
    create_tmp_table_priv='Y',
    lock_tables_priv='Y',
    execute_priv='Y',
    repl_slave_priv='Y',
    repl_client_priv='Y',
    max_questions=0,
    max_updates=0,
    max_connections=0
    WHERE user = 'root';

    • Beende den Client und Server, starte den Server normal neu. Vergiss nicht den Zugriff via Netzwerk wieder zu ermöglichen.

    Fertig...

    Hinweis: Die SQL-"Abfrage" zum Wiederherstellen der root-Rechte gilt für MySQL 4.0.15-Max. Bei anderen Versionen musst Du eventuell weitere oder weniger Rechte berücksichtigen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. echo $begrüßung;

      • Starte  den Server es einfach mit: mysqld --skip privileges

      Bist du sicher, dass der Parameter so, mit Leerzeichen, geschrieben wird?

      Außerdem behauptet die Handbuchseite A.4.1. How to Reset the Root Password etwas anderes.

      echo "$verabschiedung $name";

      1. Hallo,

        • Starte  den Server es einfach mit: mysqld --skip privileges

        Die Option heißt --skip-grant-tables

        und ist unter Sicherheitsaspekten tatsächlich nur geeigent, wenn man die Netzwerkverbindung für die Dauer der Arbeiten unterbinden kann.

        A.4.1. How to Reset the Root Password

        Der Hinweis von Dedlfix auf die Handbuchseite sollt daher ernst genommen werden.

        Grüße

        Chris

        1. Moin!

          Hallo,

          • Starte  den Server es einfach mit: mysqld --skip privileges

          Die Option heißt --skip-grant-tables

          Komplett heisst es bei mir unter Linux:
          mysqld --skip-grant-tables --user=root

          Woher ich das mit den "skip privleges hatte? ... Hm. Da muss wohl mal suchen gehen. Womöglich von "mysql> flash privileges"....

          und ist unter Sicherheitsaspekten tatsächlich nur geeigent, wenn man die Netzwerkverbindung für die Dauer der Arbeiten unterbinden kann.

          Hab ich doch geschrieben...

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
          1. Hi!

            Komplett heisst es bei mir unter Linux:
            mysqld --skip-grant-tables --user=root

            Woher ich das mit den "skip privleges hatte? ... Hm. Da muss wohl mal suchen gehen. Womöglich von "mysql> flash privileges"....

            Es heißt FLUSH PRIVILEGES ;-)

            Grüße,
            Fabian St.

            1. Moin!

              Woher ich das mit den "skip privleges hatte? ... Hm. Da muss wohl mal suchen gehen. Womöglich von "mysql> flash privileges"....

              Es heißt FLUSH PRIVILEGES ;-)

              Unglaublich! Ich muss um die Zeit an Bier gedacht haben. Und das, obwohl der Tag noch so jung ist....

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix®

              --
              Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      2. Moin!

        Außerdem behauptet die Handbuchseite A.4.1. How to Reset the Root Password etwas anderes.

        Übrigens: die Deutsche Handbuchseite geht eine nette Abkürzung, dafür nicht auf die Sicherheitsprobleme ein.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    2. Hi,

      update user set passwort=password("neues_passwort") where user="root";

      wenn man statt passwort password schreibt und den Parameter richtig stellt finde ich deine Lösung einfach und gut. Vielen Dank für die ausführliche Erklärung!

      Schöne Grüße
      Julian

      --
      "Real programmers can write assembly code in any language." - Larry Wall