MySQL ist so sicher, dass selbst ich nicht mehr reinkomme!

Wombat

Gast
Hallo an alle!

Ich versuche eine Testumgebung mit MySQL 4.1.21 Standard, PHP und Perl einzurichten. Das lief zuerst auch ohne Probleme. Ich installierte das Paket von MySQL, das StartUpItem und den PrefPane, danach aktivierte ich in der httpd.conf PHP und Perl und testete das Ganze anschliessend. Es lief. Über die Konsole habe ich mich mit mysql, ohne einen Benutzer bzw. ein Passwort anzugeben, angemeldet. Anfangs existieren ja nur zwei Konten: eins für root, eins ohne Benutzername und alle ohne Passwort.

Hätte ich das mal so gelassen, dann würde ich diesen Beitrag jetzt nicht schreiben ...
:mad: :mad: :mad:

Genau wie im Handbuch unter dem Kapitel Securing the initial MySQL Accounts beschrieben, habe ich mit folgendem Befehl das Konto ohne Benutzernamen gelöscht:
shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;

Fantastisch, ein Konto weniger. Danach habe ich gleich noch dem Benutzer root ein Passwort verpasst - hätte ich das mal lieber gelassen ...
shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MEIN_PASSWORT');
mysql> SET PASSWORD FOR 'root'@'cornelia-menzels-ibook-g4.local' = PASSWORD('MEIN_PASSWORT');

MySQL gab überraschenderweise die Nachricht zurück, dass keine einzige Zeile von meinem Kommando betoffen wären (0 rows affected ...)

Gut. Dann habe ich es mit folgendem Befehl versucht, der ebenfalls im MySQL Handbuch steht:
shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"

Prima, nichts passierte, aber dafür lässt MySQL mich jetzt nicht mehr mit dem Befehl mysql einloggen. Daraus könnte man ja schlussfolgern, dass er nun doch ein Passwort gesetzt hat. Also habe ich das gleich mal ausprobiert:
mysql -uroot -pMEIN_PASSWORT

Als Belohnung erhalte ich ein
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Jede andere Variation wie 'mysql -uroot -p' etc. schlagen selbstverständlich auch fehl. Nun gut, dachte ich, setze ich das Passwort wieder zurück ... Ich bin also wieder nach dem Handbuch vorgegangen, um das Passwort von root zurückzusetzen und wieder mit dem selben Erfolg. Nichts.

Gut, habe ich also die MySQL Installation mit sudo rm -Rv /usr/local/mysql ins Jenseits befördert. Das gleiche Schicksal ereilte dem StartUpItem.

Wenn ich nun MySQL erneut installiere, dann steht auf dem Button nicht mehr Installieren zum Bestätigen, sondern es steht da jetzt Aktualisieren, was die Vermutung zulässt, dass nicht alles restlos entfernt worden ist und noch irgendwo Dateileichen herumliegen müssen, die dem Paket sagen, dass ich MySQL schon mal installiert hatte.

Wenn die neue Installation dann vollbracht ist, habe ich das gleiche Problem wie vorher: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES).

Ich muss ganz ehrlich sagen, dass ich mir keiner Schuld bewusst bin und hier so vor mich hindampfe vor Wut. Unter Linux war eine lokale Testumgebung innerhalb weniger Minuten installiert. Ich hätte jetzt ums Verrecken gerne dieses blöde MySQL installiert und würde mich wirklich glücklich schätzen, wenn wir mal ohne Socket-Probleme oder Passwort-Geschichten auskommen könnten.

Zeigt mir mal jemand den güldenen Weg zum Erfolg?

Vielen Dank im voraus an den/die holden Retter,
Wombat
 

wolfsbein

Jerseymac
Registriert
29.06.05
Beiträge
448
Ich kann dein Problem nicht nachvollziehen, da ich die Sicherung genau so gemacht habe. Es kann aber sein, dass du irgendwo eine .mysql Datei hast, die sich das gemerkt hat. Bei mir gibt es mehrere .mysql Dateien und dann noch ein paar Sachen in der Library. Hast du das alles auch geloescht?
 

Wombat

Gast
Ich habe schon nach Dateien gesucht wie eine Verückte, aber ich durchforste ohnehin gerade meine Festplatte und werde sehen, ob ich noch etwas finden kann ...

Danke jedenfalls. Mal zu hören, dass es bei einem geklappt hat, macht mir wieder Mut.

Viele Grüsse,
Wombat
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Wombat, keine Panik :D

Auch dafür hat MySQL einen Ausweg vorgesehen. Du musst den Server dazu stoppen und mit dem Zusatz "--skip-grant-tables" starten.

Wie das geht, habe ich mal eben ergoogelt, allerdings läuft das auf einem Mac ein wenig anders (dies hier ist der Weg auf einem RedHat-Linux):
http://www.linuxquestions.org/linux/answers/Security/MySQL_root_password_recovey

Dies müsste der Weg auf Mac OS X sein, vorausgesetzt, Du hast die Standard-Distribution von MySQL.com verwendet und keine andere:
Code:
$ su -
Password:
Mac:~ root# /Library/StartupItems/MySQLCOM/MySQLCOM stop
Stopping MySQL database server
Mac:~ root# /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --skip-grant-tables
...
So müsste es gehen ;) Anschließend Server wieder beenden und regulär neu starten, wenn Du die Benutzertabellen wieder im Griff hast.
 

Wombat

Gast
Wombat, keine Panik :D

Auch dafür hat MySQL einen Ausweg vorgesehen. Du musst den Server dazu stoppen und mit dem Zusatz "--skip-grant-tables" starten.

Wie das geht, habe ich mal eben ergoogelt, allerdings läuft das auf einem Mac ein wenig anders (dies hier ist der Weg auf einem RedHat-Linux):
http://www.linuxquestions.org/linux/answers/Security/MySQL_root_password_recovey

Dies müsste der Weg auf Mac OS X sein, vorausgesetzt, Du hast die Standard-Distribution von MySQL.com verwendet und keine andere:
Code:
$ su -
Password:
Mac:~ root# /Library/StartupItems/MySQLCOM/MySQLCOM stop
Stopping MySQL database server
Mac:~ root# /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --skip-grant-tables
...
So müsste es gehen ;) Anschließend Server wieder beenden und regulär neu starten, wenn Du die Benutzertabellen wieder im Griff hast.

Vielen Dank Hilarious. Ich weiss, Du kennst Dich mit MySQL aus. Ich hatte das auch schon in der Dokumentation gelesen und ausprobiert bevor ich meinen Beitrag geschrieben habe. Die MySQL-Mailingliste habe ich dazu auch befragt, aber wie gesagt, es hat nicht hingehauen. Ich muss irgendeinen Fehler gemacht haben. Es ist einfach nicht vorstellbar, dass MySQL (Standard, von mysql.com heruntergeladen) auf Mac OS X nicht so läuft wie sonst. Andere haben es ja auch und bei mir lief es auch schon mal.

Da aber leider die Zeit drängte und ich nicht länger warten wollte/konnte, habe ich mein iBook einfach komplett neu aufgesetzt. Ich hatte vorher schon mehrmals versucht, MySQL zu deinstallieren, indem ich alle Dateien gelöscht habe, aber es funktionierte nicht. Der Installierer erkannte jedes Mal, dass ich das Programm schon mal installiert hatte (wenn man die Packages aus /Libraries/Receipts löscht erkennt er es nicht mehr, aber mein Problem blieb bestehen), bzw. übernahm irgendwelche Einstellungen von was-weiss-ich-woher. Ich hatte jedesmal wieder das selbe Problem. Also habe ich alles neu installiert und jetzt läuft alles wie es soll. Es hat mich etwas mehr als 1 Stunde gekostet sowohl das Betriebsystem als auch alle Programme zu installieren, inklusive Preferences.

Es ärgert mich nur wahnsinnig, dass ich nicht mehr herausbekommen habe, was die Ursache für das Problem war. :-c Ich habe meine MySQL Installation jetzt ganz jungfräulich auf dem System laufen - ohne Passwort. Vielleicht fasse ich in den nächsten Tagen den Mut, ein Passwort zu vergeben. :eek:

Vielen Dank für Eure Hilfe und viele Grüsse aus Madrid,
Wombat
 

Soul Monkey

Gast
Schau dir einmal MAMPP (ich verwende nur MAMP ohne Perl, habe fuer MAMPP jetzt auch kein Downloadlink aber es gibt es) oder XAMPP an. MAMP finde ich persoenlich sehr komfortabel (ja auch wenn die Haelfte an Software schon mit dem OS X kommt).
 

Wombat

Gast
Hallo Soul Monkey!

Ich bin generell jemand, der es lieber mit den 'Bordmitteln' versucht - soweit vorhanden - als noch zusätzlich etwas zu installieren. Es ist an sich sehr einfach, sich auf dem Mac eine Testumgebung einzurichten.

Aber für alle, die es interessiert: MAMP und XAMPP für Mac OS X.

Viele Grüsse und vielen Dank,
Wombat
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.057
Ich hatte vorher schon mehrmals versucht, MySQL zu deinstallieren, indem ich alle Dateien gelöscht habe, aber es funktionierte nicht. Der Installierer erkannte jedes Mal, dass ich das Programm schon mal installiert hatte (wenn man die Packages aus /Libraries/Receipts löscht erkennt er es nicht mehr, aber mein Problem blieb bestehen), bzw. übernahm irgendwelche Einstellungen von was-weiss-ich-woher. Ich hatte jedesmal wieder das selbe Problem. Also habe ich alles neu installiert und jetzt läuft alles wie es soll. Es hat mich etwas mehr als 1 Stunde gekostet sowohl das Betriebsystem als auch alle Programme zu installieren, inklusive Preferences.
Ohje, hält jetzt das typische Windows-Problemlösungverfahren auch auf Macs Einzug?

Wenn Du Probleme mit der Datenbank hast, kannst Du das lösen in dem Du die DB Dateien löschst und sie mit dem Admin-Programm wieder anlegst. Wenn die DB Files auch der Platte verblieben sind, brauchst Du Dich nicht darüber zu wundern, daß deine "ich lösche einfach irgend was ohne zu wissen ob das sinnvoll ist" Aktion fehlschlug. Mit dem Befehl "ps alx" kannst Du auf dem Terminal sehen mit welchen Optionen, die Programme im Hintergrund gestartet wurden (nicht nur die). Zum Beispiel sieht man bei mir folgende Zeile
Code:
  UID   PID  PPID CPU PRI NI      VSZ    RSS WCHAN  STAT  TT       TIME COMMAND
  401   174     1   0  31  0    34156    296 -      S     ??    0:00.74 /Library/PostgreSQL8/bin/postmaster -D /Library/PostgreSQL8/data -i
in der Ausgabe. Ich benutze PostgreSQL und hier sieht man sehr schön, daß das Programm mit der Option "-D /Library/PostgreSQL8/data" gestartet wurde. Hat man so ein Problem wie Du es beschreibst, Server anhalten, Dateien löschen, DB Cluster neuanlegen und Server wieder starten.

P.S. Hilfreich ist es in so Situationen die Nerven zu behalten und die Doku in Ruhe durchzulesen. Egal wieviel Streß gerade herrscht.
 
  • Like
Reaktionen: 1 Person

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Kurz: MAMP oder XAMPP sind unnötig, denn MySQL AB (mysql.com) gibt es Doppelklick-und-Glücklich-PKGs für jeden Mac. Manchmal sind Fremddistributionen sogar problematisch.

Lang: Steht hier.

Viel Erfolg weiterhin, wombat!
 

Wombat

Gast
Ohje, hält jetzt das typische Windows-Problemlösungverfahren auch auf Macs Einzug?
Ja, das ist wohl immer die Lösung, wenn man es nicht besser weiss.

Wenn Du Probleme mit der Datenbank hast, kannst Du das lösen in dem Du die DB Dateien löschst und sie mit dem Admin-Programm wieder anlegst. Wenn die DB Files auch der Platte verblieben sind, brauchst Du Dich nicht darüber zu wundern, daß deine "ich lösche einfach irgend was ohne zu wissen ob das sinnvoll ist" Aktion fehlschlug. Mit dem Befehl "ps alx" kannst Du auf dem Terminal sehen mit welchen Optionen, die Programme im Hintergrund gestartet wurden (nicht nur die). Zum Beispiel sieht man bei mir folgende Zeile
Code:
  UID   PID  PPID CPU PRI NI      VSZ    RSS WCHAN  STAT  TT       TIME COMMAND
  401   174     1   0  31  0    34156    296 -      S     ??    0:00.74 /Library/PostgreSQL8/bin/postmaster -D /Library/PostgreSQL8/data -i
in der Ausgabe. Ich benutze PostgreSQL und hier sieht man sehr schön, daß das Programm mit der Option "-D /Library/PostgreSQL8/data" gestartet wurde. Hat man so ein Problem wie Du es beschreibst, Server anhalten, Dateien löschen, DB Cluster neuanlegen und Server wieder starten.
Danke für diese ausführliche Hilfe. Sehr brauchbar.

P.S. Hilfreich ist es in so Situationen die Nerven zu behalten und die Doku in Ruhe durchzulesen. Egal wieviel Streß gerade herrscht.
Habe ich. Was ich gemacht habe, beschrieb ich glaube ich schon (Passwort zurücksetzen).

--- schnipp ---
Viel Erfolg weiterhin, wombat!
--- schnapp ---
Vielen Dank! Jetzt geht es ja wieder. Und sollte noch mal was schief gehen, dann habe ich ja schon ein paar Tipps bekommen ...

Viele Grüsse,
Wombat

PS. Ich hatte leider nicht so viel Zeit und habe deshalb erst jetzt geantwortet.