ROOT-LOGIN-Stress mit MARIADB .... ein Problem mit dem Authentifizierungs-Plugin unix_socket?

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
muenster
Beiträge: 118
Registriert: 18.01.2021 12:05:31

Re: ROOT-LOGIN-Stress mit MARIADB .... ein Problem mit dem Authentifizierungs-Plugin unix_socket?

Beitrag von muenster » 29.03.2022 17:01:51

hallo Eggy,

danke

Code: Alles auswählen

Passwort: 
root@mx:/home/martin# sudo /etc/init.d/mysql stop
[ ok ] Stopping MariaDB database server: mysqld.
root@mx:/home/martin# sudo /etc/init.d/mysql start
[ ok ] Starting MariaDB database server: mysqld.
root@mx:/home/martin# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.5.5-10.3.34-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select user,host,password,plugin from mysql.user;
+------+-----------+----------+-------------+
| user | host      | password | plugin      |
+------+-----------+----------+-------------+
| root | localhost |          | unix_socket |
+------+-----------+----------+-------------+
1 row in set (0.00 sec)


Frage mich an dieser Stelle; hab ich denn hier das bei Kofler beschriebene Problem



hier: ROOT-LOGIN-PROBLEM MIT MARIADB - der Artikel von M. Kofler am 4 DEZEMBER 2015 MICHAEL KOFLER (vgl. https://kofler.info/root-login-problem-mit-mariadb/ )

Kofler schreibt: In MariaDB gibt es das Authentifizierungs-Plugin unix_socket (Dokumentation). Heute bin ich das erste Mal darüber gestolpert, weil dieses Plugin bei einer MariaDB-Installation unter Ubuntu 15.10 standardmäßig aktiv ist. in sich ist das eine feine Sache: Solange Sie als root bzw. mit sudo arbeiten, können Sie sich ohne Passwort beim MySQL-Server anmelden:

Wenn Sie gerade nicht root sind, scheitert der Login.

Code: Alles auswählen

mysql -u root
  ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Insofern ist MariaDB nun auch ohne Passwort abgesichert. Probleme treten nur dann auf, wenn Sie MariaDB auch dann administrieren möchten,
ohne unter Linux als root oder mit sudo zu arbeiten.

vgl. https://kofler.info/root-login-problem-mit-mariadb/


Kofler fährt fort: MySQL-Login als gewöhnlicher Benutzer
Das Problem ist nur: Wenn Sie unter Linux nicht als root eingeloggt sind bzw. sudo nicht verwenden, funktioniert der Login weiterhin nicht.

Code: Alles auswählen

mysql -u root -p
Enter password: ******
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Kofler ferner: MariaDB führt jetzt nämlich zwei Authentifizierungsverfahren parallel aus: Der DB-Server überprüft, ob Sie als Linux-Benutzer root-Rechte haben UND ob Sie das korrekte Passwort angeben. Das Passwort alleine reicht nicht mehr. Wenn sich MariaDB so verhalten soll wie früher, d.h., dass Sie sich nach einer Passwort-Angabe auch als gewöhnlicher Benutzer als MariaDB-root anmelden können, dann müssen Sie das unix_socket-Plugin deaktivieren. Werfen Sie zuerst einen Blick in die Tabelle mysql.user …

Frage mich an dieser Stelle; hab ich denn hier das bei Kofler beschriebene Problem


Oder hab ich diesen Artikel hier von M. Kofler nicht richtig verstanden:

Denn er schreibt im Folgenden: Wenn sich MariaDB so verhalten soll wie früher, d.h., dass Sie sich nach einer Passwort-Angabe auch als gewöhnlicher Benutzer als MariaDB-root anmelden können, dann müssen Sie das unix_socket-Plugin deaktivieren. Werfen Sie zuerst einen Blick in die Tabelle mysql.user …


und führt dann folgende Abfrage aus:

Code: Alles auswählen

sudo mysql -u root -p
  Enter password: *******
select user,host,password,plugin from mysql.user;
  +------+-----------+------------------------+-------------+
  | user | host      | password               | plugin      |
  +------+-----------+------------------------+-------------+
  | root | localhost | *geheimerhashcode      | unix_socket |
  | root | e320      | *geheimerhashcode      | unix_socket |
  | root | 127.0.0.1 | *geheimerhashcode      | unix_socket |
  | root | ::1       | *geheimerhashcode      | unix_socket |
  +------+-----------+------------------------+-------------+
(vgl. https://kofler.info/root-login-problem-mit-mariadb/ )


Also - mein Ziel ist ein System zu haben das moeglichst einfach zu handhaben ist - klar gibt es viele Schichten und Ebenen. Aber am Anfang brauch ich einen Überblick und einen Einstieg. - und die koflersche Abfrage, die find ich persönlich schon mal hilfreich,


Ziel: ich brauch halt ein paar user - auf der DB, mit denen ich arbeiten kann


Und ja: wenn es hilf - den ganzen Laden zu vereinfachen - dann wär es ggf. auch eine IDEE das unix_socket-Plugin zu deaktivieren, so wie Kofler das diskutiert!?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: ROOT-LOGIN-Stress mit MARIADB .... ein Problem mit dem Authentifizierungs-Plugin unix_socket?

Beitrag von eggy » 29.03.2022 17:52:37

Die Anleitung ist also 7 Jahre alt? In Hunde- ähm IT-Jahren sind das etwa drei Zeitalter.

Die Einstellungen bei Debian sind in der Regel sehr konservativ gewählt, mit anderen Worten: sicher.

Das "@localhost" bedeutet, dass das Anmelden an der Datenbank nur von der Kiste selbst geht. Kommt die Anfrage von nem anderen Gerät wird sie verworfen. Dazu die Nutzung der Unixsockets, ein weiterer Punkt dafür, dass die Daten/Passwörter nicht "außen" übers Netz laufen, sondern direkt auf der Kiste verbleiben. Unixsockets sind da also erstmal gut.
Die Einstellungen sind für "ich will nen sicheren Datenbankserver, den man gefahrlos ans Netz lassen kann" gedacht. Wenn Du das jetzt anfängst das Konzept da aufzuweichen, machst Du Dein Sicherheitsnetz kaputt. Und falls der Server im Netz steht, bekommst Du garantiert sehr unangenehme Probleme. Falls der Rechner bei Dir zu Hause zum Üben steht, gewöhnst Du Dir "nur" schlechtes Verhalten an, dass Du dann später in der Praxis sehr schlecht wieder losbekommst. Also lass das.

Lass den rootaccount in Ruhe. Daran rumzupfuschen bringt auf lange Sicht nur Ärger. Log Dich wie beschreiben ein, lege eine Datenbank "meinprojekt" an. Lege einen Datenbankuser "projektuser" an, gebe dem Projektuser die notwendigen Rechte und log Dich wieder aus.
Mehr Verwaltung brauchst Du im ersten Schritt wirklich nicht.
Du kannst für root@localhost das auf unix_socket belassen, und dem "projektuser" das Anmelden via Passwort erlauben. Da der dann nur Zugriff auf die Daten seines Projekts hat, ist es auch nur begrenzt schlimm, falls der Account mal geknackt wird.

(Falls Du Dir wirklich unbedingt und absichtlich ins eigene Knie ballern willst: Man könnte nen phpmyadminrootuser anlegen und dem Berechtigungen auf alles, incl. der Verwaltungsdatenbanken, geben. Da würde wenigstens dafür sorgen, dass die Annahmen, die gewisse Debianpakete hinsichtlich des Backups bzw. Start-Stopverhaltens unter dem root account treffen, nicht an die Wand gefahren werden. Ich halte das aber für ne sehr sehr unschöne Idee und rate dringend davon ab.)

muenster
Beiträge: 118
Registriert: 18.01.2021 12:05:31

Re: ROOT-LOGIN-Stress mit MARIADB .... ein Problem mit dem Authentifizierungs-Plugin unix_socket?

Beitrag von muenster » 29.03.2022 21:23:21

Danke vorweg Eggy.


puuh: to make an apple pie from scratch you must first invent the universe :D


klar Eggy, du hast natürlich Recht mit deinen Tipps gleich von Anfang an alles richtig zu machen.


Was man sich nicht erfliegen kann, dass muss man sich halt erhumpeln ;) - ums vorwegzu nehmen: ich kann mich jetzt auch auf den phpMyadmin einloggen. Das ist zwar nicht das primäre Hauptziel gewesen - aber hat mich in diesem Thread echt ganz nett beschäftigt - was da los war - und wie die Sachen zusammenhängen.


ich hab einfach mal auf der Grundlage des bis jetzt Bestehenden - angefangen bzw. weitergemacht und ein bzw. zwei User angelegt.


ergo ganz kleine Schritte gemacht:

a. Ein zusätzlichen Benutzer mit allen Rechten anlegen, dazu melden wir uns mit dem MySQL-Client am DB-Server an.

Code: Alles auswählen

mysql -u root


also bis hier klappt ja mal alles, ich bin jetzt im MySQL Prompt drinne.

Code: Alles auswählen

MySQL [(none)]>
Und jetzt mach ich mit den folgenden SQL Befehlen weiter: Ich will nen MariaDB-Benutzer erstellen und ihm die Rechte zu erteilen.

Code: Alles auswählen

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
und weiter gehts:

Code: Alles auswählen

mysql> GRANT ALL PRIVILEGES ON *.* TO 'wp'@'localhost' WITH GRANT OPTION;
ERROR 1133 (28000): Can't find any matching row in the user table
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'newusere'@'localhost';
ERROR 1141 (42000): There is no such grant defined for user 'newusere' on host 'localhost'
mysql> SHOW GRANTS FOR 'newuser'@'localhost';
+-------------------------------------------------------------------------------------------------------------------------+
| Grants for newuser@localhost                                                                                            |
+-------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `newuser`@`localhost` IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
+-------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

soweit so gut. Und ja: ich kann mich jetzt auch auf den phpMyadmin einloggen. :D

Vielen Dank nochmals für Deine tolle Hilfe - und für Eurer MEGA-Forum.

Ich bin überwältigt _ und manchmal frage ich mich an solchen Tagen - und in solchen Threads - ob ich wirklich von MX als Hauptsystem zu Debian wechseln soll - und nicht zu EndeavourOS ....


Vielen Dank für Eure Tipps - und alle durchgehaltene Hilfe.. Ich werd morgen weitermachen..

Schritt für Schritt - und dann werde ich auch die diversn Schichten berücksichtigen - neben einer KISS _ REGEL den Ganzen Laden hier simple zu keepen damit ich ein paar Schritte machen kann. ;)

Viele Grüße
Münster :D

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: ROOT-LOGIN-Stress mit MARIADB .... ein Problem mit dem Authentifizierungs-Plugin unix_socket?

Beitrag von eggy » 29.03.2022 21:40:00

mysql> GRANT ALL PRIVILEGES ON *.* TO 'wp'@'localhost' WITH GRANT OPTION;
ERROR 1133 (28000): Can't find any matching row in the user table
Da fehlte wohl noch ein "create"? :mrgreen:

Wechsel wohin Du willst, aber Server betreibt man besser auf nem stabilen System.
Und stabiler als Debian stable wirst Du vermutlich nicht finden.

Antworten