Frage

Ich habe ein Problem mit dem MySQL-Benutzer root in Meinem MySQL-Setup, und ich kann einfach nicht für das Leben von mir herauszufinden, wie es zu beheben. Es scheint, dass ich irgendwie den Root-Benutzer vermasselt, und mein Zugang zu Datenbanken ist jetzt sehr unberechenbar.

Als Referenz Ich bin mit MAMP auf OS X den MySQL-Server zur Verfügung zu stellen. Ich bin mir nicht sicher, wie viel, was zählt, obwohl -. Ich vermute, dass das, was ich habe eine Kommandozeile-Fix erforderlich gemacht wird, es zu lösen

Ich kann MySQL starten MAMP wie gewohnt verwenden und Zugriff auf Datenbanken, die ‚Standard‘ Anwender, die ich für meine PHP-Anwendungen erstellt haben. der Root-Benutzer, die ich in meinem MySQL GUI-Client verwenden, und auch in phpMyAdmin kann jedoch nur Zugriff auf die „information_schema“ Datenbank sowie zwei habe ich manuell erstellt und vermutlich (und fälschlicherweise) links Berechtigungen weit offen für. Meine 15 oder so andere Datenbanken können nicht meine die Root-Benutzer zugegriffen werden. Als ich phpMyAdmin laden, sagt der Home-Bildschirm: „Neue Datenbank erstellen: keine Privilegien“.

Ich habe auf jeden Fall irgendwann mein Root-Benutzer-Passwort ändern Sie den MAMP Dialog. Aber ich kann mich nicht erinnern, ob ich etwas anderes tat, die dieses Problem verursacht haben könnten. Ich habe versucht, wieder das Kennwort zu ändern, und es scheint in der Frage keine Veränderung zu sein.

Ich habe auch versucht, Root-Passwort Zurücksetzen der Befehlszeile, einschließlich Starten von MySQL manuell mit --skip-grant-tables dann privs Spülung, aber auch hier nichts scheint das Problem zu beheben.

Ich habe bis zum Ende meiner Ideen kommen, und würde schätzt es sehr, einige Schritt-für-Schritt-Beratung und Diagnose von einem der Experten hier!

Vielen Dank für Ihre Hilfe.

War es hilfreich?

Lösung

Das ist, weil MAMP und die Befehlszeile mysql (und die mysql alles außer MAMP) unterschiedlich ist.

MAMP hat seine eigene in mysql gebaut und man kann ihm nicht über die Kommandozeile bekommen, nur den Build in phpMyAdmin.

das ist meine Erfahrung gewesen, ich habe MAMP und mit der anderen mysql für Ruby on Rails und andere Sachen.

Andere Tipps

Ich hatte das gleiche Problem: nur ein Benutzerkonto gearbeitet, um die MySQL-Datenbanken über die Administrationskonsole oder den Abfrage-Browser zugreifen. Wenn ich die skip-grant-tables verwendet plötzlich konnte alle Konten anmelden, einschließlich Root.

Ich sah es href="http://bugs.mysql.com/bug.php?id=22118" rel="noreferrer"> als Bug so weit zurück wie 2006

Was hat mir geholfen,
Diese Antwort ist ähnlich einem beschrieben von Ben Bakelaar in den obigen Link . Das Problem kommt, wenn Ihr my.ini die deaktiviert Namensauflösung Flagge hat (skip-name-resolve). Dies tötet die Fähigkeit von MySQL ‚localhost‘ und die mysql.user Tabelle hat für localhost / root einen Eintrag nur zu lösen.

Aktualisieren Sie Ihren mysql.user Tisch Eintrag localhost statt 127.0.0.1 werden, und Sie können sogar mit der Skip-name-resolve-Funktion zu den lokalen Konsolen melden Sie sich an aktiviert.

Starten Sie den Server mit --skip-grant-tables starten und dann in der MySQL-Datenbank, die Berechtigungstabellen Überprüfung:

select * from user where User='root';
select * from tables_priv where User='root';
select * from db where User='root';

Sie können auch versuchen:

show grants for root@localhost;
show grants for root@'%';
show grants for root@'hostname';

Wenn in Sie könnte dies tun, um zu versuchen root volle Privilegien zu geben:

grant all privileges on *.* to root@localhost identified by 'password' with grant option;

Ihr Kommentar zeigt Ihre aktuellen Root-Rechte (ohne --skip-grant-tables). Es ist gut, dass Sie nicht für ‚root‘ einen Eintrag haben @ ‚%‘, Sie müssen nicht, dass standardmäßig und Sie können es sich um eine Sicherheitsmaßnahme in Betracht ziehen.

Es sieht aus wie Sie Ihre 'root'@'localhost' Privilegien vermasselt habe. GRANT ALL PRIVILEGES ON . ist seltsam. Normalerweise haben Sie so etwas wie GRANT ALL PRIVILEGES ON *.* oder GRANT ALL PRIVILEGES ON myDatabase.myTable. Ihre GRANT ist nicht festgelegt, die Datenbanken und / oder Tabellen für die Privilegien zu gewähren. Ich habe keine Ahnung, wie Ihr Kunde es zu produzieren verwaltet. Ich kann es nicht reproduzieren mit dem MySQL-Kommandozeilen-Client (versuchte leere Strings, Leerzeichen, jede Art von Zitaten ...), mysql weigert sich, die GRANT-Anweisung (die, natürlich, das richtige Verhalten ist). Sieht aus wie MAMP ist etwas wirklich seltsam zu tun. Da ich kein GRANT wie das Ihr wiedergeben kann, kann ich nicht sagen, wie mysql interpretiert, aber ich denke, es ist die Privilegien gesetzt hat, auf globaler Ebene 'N'.

Um es zu beheben, müssen Sie einen Benutzer mit sachgemäßen Privilegien. Normalerweise haben Sie einen Benutzer 'root'@'localhost' und 'root'@'your-hostname'. Wenn Sie Glück haben, ist 'root'@'your-hostname' immer noch in Ordnung. Afair, mysql Verbindungen funktionieren wie folgt: Wenn Sie localhost verbinden, Sie als 'root'@'localhost' verbinden (nicht sicher 127.0.0.1, ich denke, es ist auch 'root'@'localhost' ist). Wenn Sie your-hostname verbinden, schließen Sie als 'root'@'your-hostname'. Wenn diese Benutzer Privilegien noch in Ordnung sind, können Sie die Privilegien für 'root'@'localhost' aktualisieren und Sie sind fertig.

In Ihrem Kommentar, Sie sagen, Sie nicht über 127.0.0.1 verbinden können, da die Buchse an einem ungewöhnlichen Ort sind. Ich denke, man die Fehler falsch interpretieren. IIRC verbinden Sie über die Buchse, wenn Sie 'localhost' verbinden, aber über TCP / IP, wenn Sie 127.0.0.1 oder your-hostname verbinden. Wenn mysql über Socket versucht, eine Verbindung und kann die Buchse nicht finden (weil Sie nicht den richtigen Speicherort angegeben haben), erwähnt die Fehlermeldung, wenn mysql versucht, die Steckdose zu finden. Ihre Fehlermeldung nicht. Ich denke, Ihre Fehler ein Netzwerkfehler. Vielleicht haben Sie den MySQL-Server mit der Option --skip-networking oder Ihre Konfiguration gibt eine falsche bind-Adresse gestartet. Sie müssen das erste beheben, sonst kann man nicht als 'root'@'your-hostname' verbinden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top