Hallo zusammen,
momentan verwende ich MySQL 8.0.45 und könnte auch auf 8.4.3 wechseln, da man dort das benötigte Plugin für mysql_native_password noch ektivieren könnte.
Wie sieht es denn im FHEM mit der Weiterentwicklung für die Verbindung zu MySQL Datenbanken aus?
Die Aktivierung von mysql_native_password ist nur eine Übergangslösung. Da das Plugin in MySQL 9.0 komplett entfernt wird, solltest du langfristig planen,
deine Anwendungen oder Benutzerkonten auf caching_sha2_password umzustellen.
In der Tat ist die Kombination aus FHEM (DbLog/DbRep) und MySQL 8.4 etwas knifflig, da FHEM auf dem Perl-Modul DBD::mysql basiert, das oft noch gegen ältere
Client-Bibliotheken gelinkt ist, die den neuen Standard caching_sha2_password nicht beherrschen.
Um FHEM mit MySQL 8.4 zum Laufen zu bringen, musst du das Plugin nicht nur in der Server-Konfiguration aktivieren, sondern auch den spezifischen FHEM-Benutzer
explizit auf die alte Methode umstellen.
Schritt-für-Schritt-Lösung für FHEM
Plugin im Server aktivieren:
Füge in deiner my.cnf (oder my.ini) unter [mysqld] die Zeile hinzu, die das Laden des Plugins erzwingt:
ini
[mysqld]
mysql_native_password=ON
Verwende Code mit Vorsicht.
Wichtig: Starten den MySQL-Dienst danach neu.
FHEM-User in MySQL anpassen:
Logge dich als Admin in die MySQL-Konsole ein und ändere den Authentifizierungstyp für deinen FHEM-Datenbank-User (ersetze fhemuser und deinpw):
sql
ALTER USER 'fhemuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'deinpw';
FLUSH PRIVILEGES;
Verwende Code mit Vorsicht.
Prüfung in FHEM:
In FHEM kannst du im DbLog-Device mit dem Befehl configCheck prüfen, ob die Verbindung nun erfolgreich aufgebaut wird.
Warum das nötig ist
FHEM nutzt Perl-DBI. Viele Installationen (besonders auf dem Raspberry Pi) verwenden Versionen von libmysqlclient oder DBD::mysql, die vor der Einführung von SHA2-Caching entstanden sind. Ohne die obigen Schritte würde FHEM beim Verbindungsversuch den Fehler Authentication plugin 'caching_sha2_password' cannot be loaded werfen.
Tipp für die Zukunft: Da mysql_native_password in MySQL 9.0 endgültig entfernt wird, lohnt es sich, langfristig auf das aktuellere Perl-Modul DBD::MariaDB umzusteigen (sofern vom Betriebssystem unterstützt), da dieses besser mit modernen MySQL-Authentifizierungen harmoniert.
VG Christian
Hallo Christian,
ZitatWie sieht es denn im FHEM mit der Weiterentwicklung für die Verbindung zu MySQL Datenbanken aus?
Ich verstehe die Frage nicht.
ZitatDa mysql_native_password in MySQL 9.0 endgültig entfernt wird, lohnt es sich, langfristig auf das aktuellere Perl-Modul DBD::MariaDB umzusteigen (sofern vom Betriebssystem unterstützt), da dieses besser mit modernen MySQL-Authentifizierungen harmoniert.
Das ist doch schon lange für DbLog/DbRep möglich. Steht in der Hilfe zu DbLog:
## for MariaDB
####################################################################################
#%dbconfig= (
# connection => "MariaDB:database=fhem;host=<database host>;port=3306",
# # if want communication over socket-file instead of TCP/IP transport, use:
# # connection => "MariaDB:database=fhem;mariadb_socket=</path/socket-file>",
# user => "fhemuser",
# password => "fhempassword",
# # optional enable communication compression between client and server
# compression => 1
#);
####################################################################################
LG,
Heiko
Zitat von: DS_Starter am 27 März 2026, 16:25:38Hallo Christian,
ZitatWie sieht es denn im FHEM mit der Weiterentwicklung für die Verbindung zu MySQL Datenbanken aus?
Ich verstehe die Frage nicht.
ZitatDa mysql_native_password in MySQL 9.0 endgültig entfernt wird, lohnt es sich, langfristig auf das aktuellere Perl-Modul DBD::MariaDB umzusteigen (sofern vom Betriebssystem unterstützt), da dieses besser mit modernen MySQL-Authentifizierungen harmoniert.
Das ist doch schon lange für DbLog/DbRep möglich. Steht in der Hilfe zu DbLog:
## for MariaDB
####################################################################################
#%dbconfig= (
# connection => "MariaDB:database=fhem;host=<database host>;port=3306",
# # if want communication over socket-file instead of TCP/IP transport, use:
# # connection => "MariaDB:database=fhem;mariadb_socket=</path/socket-file>",
# user => "fhemuser",
# password => "fhempassword",
# # optional enable communication compression between client and server
# compression => 1
#);
####################################################################################
LG,
Heiko
Danke Heiko,
Du bist echt der Beste, das schaue ich mir dann auch mal an, ich dachte es wäre noch nicht im FHEM berücksichtigt.
Wird denn das DBD::MariaDB auch für die Oracle MySQL verwendet?
VG Christian
ZitatWird denn das DBD::MariaDB auch für die Oracle MySQL verwendet?
Wenn du es in der conf Datei aktivierst - Ja.
Zitat von: DS_Starter am 27 März 2026, 17:33:58ZitatWird denn das DBD::MariaDB auch für die Oracle MySQL verwendet?
Wenn du es in der conf Datei aktivierst - Ja.
Bei mir ist es so konfiguriert
%dbconfig= (
connection => "mysql:database=fhem;host=192.168.xxx.yy;port=3306",
user => "fhemuser",
password => "xxxxxx",
utf8 => 1
);
Schau mal:
## for MariaDB
####################################################################################
#%dbconfig= (
# connection => "MariaDB:database=.....
Zitat von: DS_Starter am 27 März 2026, 19:50:53Schau mal:
## for MariaDB
####################################################################################
#%dbconfig= (
# connection => "MariaDB:database=.....
Ich dachte das wäre dann spezifisch für MariaDB und nicht für Oracle MySQL, da keine ich mich nicht so aus.
Ja schon. Aber du bindest hier den Treiber ein der verwendet werden soll. Und den MaraDb Treiber kannst du im Normalfall auch für MySQL verwenden.
Zitat von: DS_Starter am 28 März 2026, 08:00:21Ja schon. Aber du bindest hier den Treiber ein der verwendet werden soll. Und den MaraDb Treiber kannst du im Normalfall auch für MySQL verwenden.
Okay,
danke für die Beratung, dann werde ich das mal testen und in der Datenbank umstellen.