Ich muss wieder mal die Profis um Hilfe bitten. Die mySQL Datenbank für DbLog ist viele Jahre auf meinem alten QNAP NAS gelaufen und auch die Übersiedlung auf ein neues QNAP mit MariaDB hat funktioniert. Nun ist dieses durch Blitzschlag verstorben und ich wollte MariaDB auf einem neuen einrichten. History Dump zum Einspielen ist vorhanden.
Ich scheitere aber am Zugriff von Fhem.
Was habe ich gemacht:
Am NAS MariaDB 5 mit Port 3306 installiert und ist mit PHPmy Admin erreichbar
über den Reiter SQL die Erstellung gestartet
CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';
CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP) USING BTREE;
"Error: #1046 Keine Datenbank ausgewählt" kommt bei
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword'
CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP) USING BTREE
Trotzdem werden folgende Rechte gelistet
Benutzername Hostname Typ Rechte GRANT
fhemuser % datenbankspezifisch SELECT,INSERT,UPDATE,DELETE Nein
Mein db.config ist unverändert wobei ich mich nicht mehr erinnern kann wie ich auf das lange kryptische password gekommen bin und wie die Datenbank was damit anfangen soll. (Anm.: mein Passwort ist fürs Forum geändert zu XXXXXXX)
%dbconfig= (
connection => "mysql:database=fhem;host=192.168.1.21;port=3306",
user => "fhemuser",
password => "XXXXXXXXXXXXXX",
);
Das Komische ist nun der State von dbLog
DBI connect('database=fhem;host=192.168.1.21;port=3306','fhemuser',...) failed: Access denied for user 'fhemuser'@'raspberrypi.fritz.box' (using password: YES) at ./FHEM/93_DbLog.pm line 3235.
Woher kommt der user 'fhemuser'@'raspberrypi.fritz.box' ???
Ja, Fhem läuft auf Raspberry, Ja mein Router ist eine Fritzbox. Aber trotzdem - was soll das?
Hier noch das List von dbLog
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION /opt/fhem/db.conf
DEF /opt/fhem/db.conf .*:.*
FUUID 60754bb4-f33f-1260-550f-1a08f860cd4df0ae
FVERSION 93_DbLog.pm:v4.12.1-s24180/2021-04-07
MODE asynchronous
MODEL MYSQL
NAME myDbLog
NR 259
NTFY_ORDER 50-myDbLog
PID 28690
REGEXP .*:.*
STATE DBI connect('database=fhem;host=192.168.1.21;port=3306','fhemuser',...) failed: Access denied for user 'fhemuser'@'raspberrypi.fritz.box' (using password: YES) at ./FHEM/93_DbLog.pm line 3235.
TYPE DbLog
UTF8 0
dbconn mysql:database=fhem;host=192.168.1.21;port=3306
dbuser fhemuser
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE DBI connect('database=fhem;host=192.168.1.21;port=3306','fhemuser',...) failed: Access denied for user 'fhemuser'@'raspberrypi.fritz.box' (using password: YES) at ./FHEM/93_DbLog.pm line 3235.
PACKAGE main
READINGCOL 64
TC current
TH history
TYPECOL 64
UNITCOL 32
VALUECOL 128
VERSION 4.12.1
READINGS:
2022-07-24 22:15:53 CacheOverflowLastNum 0
2022-07-24 20:52:49 CacheOverflowLastState normal
2022-07-24 22:15:54 CacheUsage 140
2022-07-24 22:15:53 NextSync 2022-07-24 22:16:23 or if CacheUsage 500 reached
2022-07-24 22:16:03 state DBI connect('database=fhem;host=192.168.1.21;port=3306','fhemuser',...) failed: Access denied for user 'fhemuser'@'raspberrypi.fritz.box' (using password: YES) at ./FHEM/93_DbLog.pm line 3235.
helper:
bm:
DbLog_Attr:
cnt 5
dmx -1000
dtot 0
dtotcnt 0
mTS 24.07. 21:50:47
max 0.000101089477539062
tot 0.000265121459960938
mAr:
set
myDbLog
asyncMode
1
DbLog_Define:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 24.07. 21:50:47
max 0.00940513610839844
tot 0.00940513610839844
mAr:
HASH(0x66bb170)
myDbLog DbLog /opt/fhem/db.conf .*:.*
DbLog_Get:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 24.07. 21:50:55
max 5.69820404052734e-05
tot 5.69820404052734e-05
mAr:
HASH(0x66bb170)
myDbLog
?
DbLog_Log:
cnt 1791
dmx -1000
dtot 0
dtotcnt 0
mTS 24.07. 21:51:27
max 0.0620942115783691
tot 2.42345762252808
mAr:
HASH(0x66bb170)
HASH(0x2bc78c0)
DbLog_Set:
cnt 154
dmx -1000
dtot 0
dtotcnt 0
mTS 24.07. 21:51:20
max 0.00265693664550781
tot 0.273758172988892
mAr:
HASH(0x66bb170)
myDbLog
?
Attributes:
DbLogSelectionMode Include
DbLogType History
asyncMode 1
room CONTROL->FHEM
verbose 1
Fhem Neustart hat auch nichts gebracht.
Hätte beim Erstellen in SQL des Password in Klartext rein sollen? Mit oder ohne '' ?
Ich stehe an und bitte um Hilfe.
ZitatWoher kommt der user 'fhemuser'@'raspberrypi.fritz.box'
fhemuser ist klar denke ich. Und raspberrypi.fritz.box ist der Hostname deines FHEM-Servers.
Du hast mit
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';
dem User fhemuser das Passwort fhempassword zugewiesen. Das muss identisch sein zu dem hinterlegten Passwort
in der db.config, d.h.:
%dbconfig= (
connection => "mysql:database=fhem;host=192.168.1.21;port=3306",
user => "fhemuser",
password => "fhempassword",
);
Natürlich kannst du fhempassword durch ein PW deiner Wahl ersetzen, aber natürlich übereinstimmend in MariaDB uns db.config.
Gerne auch mal im DbLog aufrufen:
set ... configCheck
DANKE !!!
Es war das Passwort. :-[
Hatte ich zwar auch probiert aber dann wohl nicht neu gestartet. :-X
Herzlichen Dank