• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] leap 15.2 mysql neu installieren

gorgonz

Hacker
Heute ist nicht mein Tag. Wollte das initiale PW für mysql setzen - ähm so wie immer. Aber heute habe ich irgendwas verkehrt gemacht und jetzt ist das PW nicht mehr leer, aber mir auch nicht bekannt :-(.

Die normalen Kommandos für so einen Fall ("update user set password", "--skip-grant-tables", "alter user") klappen einfach nicht.

Nun habe ich die gute Situation, dass noch gar keine DB von mir eingerichtet ist.

Wisst ihr einen einfachen Weg, wie ich wieder den Zustand nach Installation (mit leerem Passwort) herbekommen kann?

Habs versucht, indem ich apache2, mysql und mariadb deinstalliert und wieder installiert habe. Hat leider nicht gefunzt.

Muss ich zusätzlich nach der Deinstallation bestimmte Dateien löschen?

Danke schon mal für gewogene Tipps ;-)
 

gehrke

Administrator
Teammitglied
Hmm, also bin kein Experte für leap (und ich hatte noch keinen Kaffee!), aber wird der Datenbestand von mysql/mariadb nicht unter /var/lib/mysql abgelegt?

Also wenn noch gar keine Daten vorliegen, sollte eine Deinstallation der Software via zypper und ein Verschieben oder Löschen des obigen Verzeichnisses doch für tabula rasa sorgen und danach durch erneute Installation frisch initiialisiert werden.
 

susejunky

Moderator
Teammitglied
Hallo gorgonz,
gorgonz schrieb:
... Habs versucht, indem ich apache2, mysql und mariadb deinstalliert und wieder installiert habe. Hat leider nicht gefunzt.
das De-Installieren des/der Programmpaket(s/e) mariadb/mysql löscht NICHT die bereits angelegte(n) Datenbank(en)!

Verwendest Du mysql oder mariadb?

Ob Du beide Datenbanken parallel nutzen kannst, kann ich Dir nicht sagen. Aber da mariadb die selben Befehle nutzt wie mysql könnte ich mir vorstellen, das eine parallele Nutzung nicht ganz unproblematisch ist.

Ansonsten gilt für beide Datenbanken:

  • Mit dem Parameter datadir in der Datei /etc/my.cnf wird festgelegt, welches Daten-Verzeichnis der aktuell laufende Datenbankprozess nutzt. Die Standardeinstellung ist /var/lib/mysql. Wenn mariadb mit
    Code:
    # systemctl start mysql
    gestartet wird, sucht es in dem durch datadir benannten Verzeichnis eine Datenbank und falls dort noch keine existiert, legt es eine neue an (d.h. die Schemas mysql, performance-schema und test sowie diverse Log-Dateien).
  • Mit dem Befehl mysql_install_db kannst Du eine vollständig neue Datenbank (d.h. die Schemas mysql, performance-schema und test sowie diverse Log-Dateien) anlegen. Weitere Details hierzu siehe
    Code:
    > man mysql_install_db

Viele Grüße

susejunky
 
OP
G

gorgonz

Hacker
@gehrke, @susejunky: erstmal vielen Dank für eure Anregungen zu /var/lib/myaql :). Ich hab mir das gleich mal angesehen. Ja, das stimmt. Wenn ich den Ordner umbenenne und mysql neu starte, werden bereits die Ordner mysql, test wieder neu angelegt.

Ob ich mysql oder mariadb verwende weiß ich selbst nicht definitiv. Gehe von letzterem aus. Verwende jedenfalls immer die mysql tools und vermute, das wird auf maria abgebildet. Entnehme ich auch Meldungen wie "Jan 24 16:10:47 localhost.localdomain systemd[1]: Starting MariaDB database server...".

Doch zurück. Da ich trotzdem nicht weiterkomme, muss sich entweder das Vorgehen beim Setzen des root PW geändert haben oder das Löschen des mysql Verzeichnisses bewirkt nicht das Rücksetzen des PW (auf leer).

Ich fange mit dem an, was für mich greifbar ist. Meine verwendeten Befehle sind:
Code:
mysql
UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
Der geht ja nicht mehr seit ca Leap 15.x, ist also erwartet
Code:
mysql -uroot -h localhost
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secret';
Da bekomme ich die Meldung
Code:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Code:
systemctl stop mysql
mysqld_safe --skip-grant-tables &
mysql -uroot
Da bekomme ich die Fehlermeldung
Code:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysql/mysql.sock' (2)

Aber heute ist ja wieder ein besserer Tag. Googeln ergibt, dass der mysqld_safe rechtetechnisch die socket Datei nicht anlegen kann (warum auch immer).
Alternativer Weg: skip-grant-tables nicht als Aufrufparameter verwenden, sondern konfigurieren. Das geht über die Datei /etc/my.cnf. Dort zwei Zeilen im Abschnitt [] gesetzt:
Code:
[mysqld]
# activate only for resetting the root pw
skip-grant-tables = 1
plugin-load-add = auth_socket.so
Trotzdem den socket Fehler bekommen

Dann gab es noch die Idee den socket bei laufendem db-server zu kopieren und nach beenden des Dienstes einzuspielen.Seufz, geht jedenfalls nicht per cp. Da kommt
"p: 'mysql.sock' kann nicht zum Lesen geöffnet werden: Kein passendes Gerät bzw. keine passende Adresse gefunden"

Ok, für den Moment reicht es mir mal wieder. Vielleicht helfen die detaillierten Angaben, dass ein Denkfehler von mir schneller auffindabr ist ;-)
 

susejunky

Moderator
Teammitglied
Hallo gorgonz,
gorgonz schrieb:
... Meine verwendeten Befehle sind:
Code:
mysql
UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
also ich habe das erstmalige setzen des Datenbank-Administratorkennworts bislang immer mit
Code:
# mysqladmin -u root password 'HIER_DAS_NEUE_ADMINISTRATORKENNWORT'
vorgenommen.

Viele Grüße

susejunky
 
Oben