Hallo,
ich bin gerade dabei configDB einzurichten. Ich bekomme über ssh folgenden Fehler:
root@fhem-neu:/opt/fhem# perl fhem.pl configDB
DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. at configDB.pm line 704.
Mit configdb migrate in FHEM bekomme ich sofort im Browser die Meldung:
This page isn't working192.168.178.186 didn't send any data.
ERR_EMPTY_RESPONSE
Die Datei habe ich angelegt: /opt/fhem/configDB.conf
%dbconfig= (
connection => "mysql:database=fhem;host=192.168.178.15;port=3306",
user => "fhemuser",
password => "fhempassword",
# optional enable(1) / disable(0) UTF-8 support (at least V 4.042 is necessary)
utf8 => 1
);
list
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION ./configDB.conf
DEF ./configDB.conf .*:.*
FUUID 5ef54aeb-f33f-f816-661b-c9d9f748cdb6a0f4
FVERSION 93_DbLog.pm:v4.10.2-s22246/2020-06-23
MODE synchronous
MODEL MYSQL
NAME logdb
NR 14
NTFY_ORDER 50-logdb
PID 1225
REGEXP .*:.*
STATE DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. at ./FHEM/93_DbLog.pm line 3018.
TYPE DbLog
UTF8 1
dbconn mysql:database=fhem;host=192.168.178.15;port=3306
dbuser fhemuser
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. at ./FHEM/93_DbLog.pm line 3018.
PACKAGE main
READINGCOL 64
TC current
TH history
TYPECOL 64
UNITCOL 32
VALUECOL 128
VERSION 4.10.2
Helper:
DBLOG:
state:
logdb:
TIME 1593134528.15599
VALUE DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. at ./FHEM/93_DbLog.pm line 3018.
READINGS:
2020-06-26 01:25:13 state DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. at ./FHEM/93_DbLog.pm line 3018.
Attributes:
Du versuchst, eine configDB Konfiguration mit einem DbLog device zu vewenden.
configDB und DbLog sind zwei komplett voneinander unabhängige Dinge!
Bist Du Dir sicher, dass Du verstanden hast, was Du eigentlich wirklich tun willst?
Das habe ich schon verstanden. DBLog ist für die Logs, dbconfig Ersatz für die fhem.cfg.
In dem Beitrag steht kein Server, auf dem ich meine SQL eintragen soll:
https://forum.fhem.de/index.php/topic,54055.0.html
In der commandref steht zumindest das:
#%dbconfig= (
# connection => "mysql:database=configDB;host=db;port=3306",
# user => "fhemuser",
# password => "fhempassword",
#);
Edit: Ich habe noch keine Anleitung gefunden, in der alle Schritte gut erklärt sind.
Zitat von: TWART016 am 26 Juni 2020, 19:22:36
In dem Beitrag steht kein Server, auf dem ich meine SQL eintragen soll:
Abgesehen davon, dass ich den Satz inhaltlich nicht verstehe (auf welchem
Server willst Du
was eintragen?), kann ich DIr zu dem zitierten Forum-Thread sagen:
Der Workshop sollte möglichst wenig Zutun des Anwenders erfordern, deshalb wird dort die configDB mit sqlite3 eingerichtet.
Für diese Konstellation ist in der 5-Schritte-Anleitung alles enthalten, was benötigt wird, damit das angegebene Beispiel funktioniert.
Wenn man verstanden hat, wie das prinzipiell funktioniert und die Absicht hat, eine andere Datenbank anstatt sqlite3 einzusetzen, liegt die geistige Transferleistung für die Konfiguration der Datenbankverbindung beim Anwender.
Und in der commandref ist - wie Du selbst bemerkt hast - das Ganze etwas ausführlicher beschrieben. Die commandref ist für mich die einzige "Quelle der Wahrheit", da ich als zuständiger Entwickler ausschließlich diese Dokumentation pflege.
Trotzdem habe ich noch keinen blassen Schimmer, warum Du im ersten Beitrag das list eines
DbLog devices einfügst, das eine Konfigurationsdatei benutzt, welche (dem Namen nach) für configDB bestimmt sein sollte.
Die Fehlermeldung
Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection
deutet für mich eher auf ein Problem in Deiner MySQL Umgebung hin.
Meine configDB.conf sieht nun so aus.
%dbconfig= (
connection => "mysql:database=fhem;host=192.168.178.15;port=3306",
user => "fhemuser",
password => "fhempassword"
);
Dieser Schritt ist für eine neue Installation:
Diesen Fehler erhalte ich:
root@fhem-neu:/opt/fhem# perl fhem.pl configDB
2020.06.26 22:47:37 1: Can't locate configDB.pm in @INC (you may need to install the configDB module) (@INC contains: . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at (eval 13) line 1.
BEGIN failed--compilation aborted at (eval 13) line 1.
Undefined subroutine &main::cfgDB_Init called at fhem.pl line 573.
Bei der Migration mit configdb migrate kommt:
Unknown command configdb, try help.
Ich sehe in der commandref kein define, wo ich die conf angeben kann.
Ich habe bereits eine Datenbank fhem erstellt. Der Benutzer hat alle Rechte.
P.S. mir ist bekannt, dass ich nur eine Methode benötige.
Zitat von: CommandRefIMPORTANT:
This file must be named "configDB.conf"
This file must be located in the same directory containing fhem.pl and configDB.pm, e.g. /opt/fhem
Deswegen gibt es nirgendwo eine Stelle, wo man "die conf angeben kann"
Mach mal ein
ls -la /opt/fhem
Wie hast Du deine database=fhem in mySQL initialisiert?
Letztens: mir ist unklar, ob Du ein neues Fhem unter configDB einrichten willst, oder deine existierende migrieren willst. Bei einer Migration muss man noch mit fhem.cfg und erst dann configdb migrate benuzen.
Zitat von: amenomade am 27 Juni 2020, 01:44:48
Mach mal ein ls -la /opt/fhem
root@fhem-neu:/opt/fhem# ls -la /opt/fhem
total 740
drwxrwxrwx 10 fhem dialout 4096 Jun 26 22:50 .
drwxr-xr-x 3 root root 4096 Jun 26 00:27 ..
-rw-r--r-- 1 fhem dialout 344177 Jun 26 00:33 CHANGED
-rw-rw-r-- 1 fhem dialout 130 Jun 26 22:36 configDB.conf
-rw-rw-r-- 1 fhem dialout 18432 Jun 26 17:17 configDB.db
drwxrwxrwx 46 fhem dialout 20480 Jun 26 00:32 contrib
drwxrwxrwx 3 fhem dialout 4096 Jun 26 00:32 demolog
drwxrwxrwx 4 fhem dialout 12288 Jun 26 00:32 docs
drwxrwxrwx 6 fhem dialout 69632 Jun 26 22:35 FHEM
-rw-rw-rw- 1 fhem dialout 1037 Jun 26 23:24 fhem.cfg
-rw-rw-rw- 1 fhem dialout 25544 Jan 26 13:14 fhem.cfg.demo
-rwxrwxrwx 1 fhem dialout 163715 Jun 26 00:33 fhem.pl
drwxr-xr-x 3 fhem dialout 4096 Jun 26 00:33 lib
drwxrwxrwx 2 fhem dialout 4096 Jun 26 00:32 log
-rw-rw-rw- 1 fhem dialout 42396 Jun 26 00:33 MAINTAINER.txt
-rw-r--r-- 1 fhem dialout 1024 Jun 26 01:23 .nano.swp
-rw-rw-rw- 1 fhem dialout 935 Jan 26 13:14 README_DEMO.txt
drwxr-xr-x 4 fhem dialout 4096 Jun 26 01:11 restoreDir
drwxrwxrwx 8 fhem dialout 4096 Jun 26 00:27 www
Zitat von: amenomade am 27 Juni 2020, 01:44:48
Wie hast Du deine database=fhem in mySQL initialisiert?
So habe ich die Datenbank angelegt. Welche Tabellen benötige ich denn?
Zitat von: amenomade am 27 Juni 2020, 01:44:48
Letztens: mir ist unklar, ob Du ein neues Fhem unter configDB einrichten willst, oder deine existierende migrieren willst. Bei einer Migration muss man noch mit fhem.cfg und erst dann configdb migrate benuzen.
Am liebsten möchte ich beides hinbekommen. Welcher Weg es wird ist mir erstmal egal.
Da fehlt dir configDB.pm
Kann nicht funktionieren.
In des DB musst Du keine Tabelle anlegen, die werden automatisch angelegt.
Ich wollte nur wissen, was Du mit Usern und Passwörter gemacht hast.
Letztens: kannst Du dich mit dem connectionstring auch vom Shell aus einloggen?
Zitat von: amenomade am 27 Juni 2020, 02:02:19
Letztens: kannst Du dich mit dem connectionstring auch vom Shell aus einloggen?
Also, damit meine ich:
mysql -h 192.168.178.15 -P 3306 -u fhemuser -pfhempassword -D fhem
(ACHTUNG: kein Leerzeichen zwischen -p und fhempassword)
Zitat von: amenomade am 27 Juni 2020, 02:02:19
Da fehlt dir configDB.pm
und wo ist die? In contrib ist nichts.
Zitat von: amenomade am 27 Juni 2020, 02:07:55
Also, damit meine ich:
mysql -h 192.168.178.15 -P 3306 -u fhemuser -pfhempassword -D fhem
(ACHTUNG: kein Leerzeichen zwischen -p und fhempassword)
Damit komme ich in die mysql command line
Bei meiner SQL hatte ich auf Port 33061 gewechselt, habe das auch in der .conf angepasst
Zitat von: TWART016 am 27 Juni 2020, 02:24:35
und wo ist die? In contrib ist nichts.
Die kommt ganz normal per update direkt in /opt/fhem
Machmal ein
update check
Du solltest die sehen.
Zitat von: amenomade am 27 Juni 2020, 02:02:19
Da fehlt dir configDB.pm
nicht nur das... es fehllt noch mehr:
Zitat
Unknown command configdb, try help.
da fehlt offenbar auch die 98_configdb.pm.
Wie alt ist eigentlich die FHEM-Installation?
Das ist übrigens interessant, im ersten Beitrag wird eine Fehlermeldung zitiert
DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: .... at configDB.pm line 704.
die darauf hindeutet, dass zu diesem Zeitpunkt die configDB.pm noch an der richtigen Stelle gewesen sein muss.
Was ist zwischenzeitlich passiert? Wer hat die jetzt fehlenden Dateien warum entfernt/gelöscht?
Zitat von: betateilchen am 27 Juni 2020, 10:25:04
Das ist übrigens interessant, im ersten Beitrag wird eine Fehlermeldung zitiert
DBI connect('database=fhem;host=192.168.178.15;port=3306','fhemuser',...) failed: .... at configDB.pm line 704.
die darauf hindeutet, dass zu diesem Zeitpunkt die configDB.pm noch an der richtigen Stelle gewesen sein muss.
Was ist zwischenzeitlich passiert? Wer hat die jetzt fehlenden Dateien warum entfernt/gelöscht?
Ich vermute, er redet von 2 Installationen: eine existierende, die er nach mysql migrieren will, und eine neue, die er sofort mit mysql betreiben will. Deswegen meine obige Frage:
Zitat von: amenomade am 27 Juni 2020, 01:44:48
Letztens: mir ist unklar, ob Du ein neues Fhem unter configDB einrichten willst, oder deine existierende migrieren willst. Bei einer Migration muss man noch mit fhem.cfg und erst dann configdb migrate benuzen.
Anwort:
ZitatAm liebsten möchte ich beides hinbekommen. Welcher Weg es wird ist mir erstmal egal.
Wenn man die Prompts guckt, kriegt man auch einen Hinweis
Zitatroot@fhem-neu:/opt/fhem#
Ich hatte vorgestern installiert und alle Updates gemacht. Trotzdem wird die Datei erst jetzt angezeigt.
Downloading https://fhem.de/fhemupdate/controls_fhem.txt
List of new / modified files since last update:
UPD ./CHANGED
UPD ./configDB.pm
UPD ./fhem.pl
UPD FHEM/00_MQTT2_CLIENT.pm
UPD FHEM/10_FBDECT.pm
UPD FHEM/49_SSCam.pm
UPD FHEM/49_SSCamSTRM.pm
UPD FHEM/76_SMAPortal.pm
UPD FHEM/98_JsonList2.pm
UPD FHEM/lib/AttrTemplate/mqtt2.template
UPD www/pgm2/fhemweb.js
New entries in the CHANGED file:
- change: 76_SMAPortal: imptove cookie/login management
- feature: 49_SSCam / 49_SSCamSTRM: new capability operate PTZ Zoom cameras
Wenn ich fhem neu installiere macht es vermutlich keinen Unterschied ob die die Daten migriere oder von neu anfange.
Jetzt wurden die Tabellen in der DB erfolgreich angelegt. Jedoch speichert fhem die config nach wie vor in der cfg und nicht in der DB, trotz
perl fhem.pl configDB
Wie kann ich mit save dauerhaft die DB nutzen?
Kannst Du bitte genauer beschreiben, was Du gemacht hast?
Vorhandene Installation migriert (durch start mit fhem.cfg, dann configdb migrate, beenden OHNE save und erst dann mit configDB gestartet?
Oder ganz neue Installation mit leerer Datenbank und einfachem Start mit configDB?
Also, Schritt für Schritt:
1. Datenbank angelegt und Rechte zugewiesen
2. ... dann?
EDIT: übrigens, hast Du jetzt mittlerweile auch 98_configdb.pm in /opt/fhem/FHEM ? Das sieht man mit deinem update nicht.
Zitat von: TWART016 am 27 Juni 2020, 12:37:22
Wie kann ich mit save dauerhaft die DB nutzen?
FHEM einmal komplett beenden und im Startskript dafür sorgen, dass FHEM künftig mit dem Parameter "configDB" anstatt "fhem.cfg" gestartet wird.
Für eine neue Config habe ich folgende Schritte durchgeführt.
Datenbank in MySQL anlegen:
CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
ssh:
service fhem stop
perl fhem.pl configDB
Nach einem Server reboot wird jedoch wieder die cfg verwendet.
98_configdb.pm in /opt/fhem/FHEM ist nun enthalten.
Zitat von: TWART016 am 27 Juni 2020, 13:08:38
Nach einem Server reboot wird jedoch wieder die cfg verwendet.
Das ist doch logisch. Daran wird sich solange nichts ändern, solange Du meinen wichtigen Hinweis
Zitat von: betateilchen am 27 Juni 2020, 13:00:53
im Startskript dafür sorgen, dass FHEM künftig mit dem Parameter "configDB" anstatt "fhem.cfg" gestartet wird.
einfach weiterhin ignorierst.
Die (dauerhafte) Änderung musst Du in der Datei /etc/systemd/system/fhem.service vornehmen, denn das ist das Startskript.
Darin sind beide Startvarianten vorbereitet und Du musst sie nur "umschalten". Also die jetzt aktive Zeile kommentieren und das Kommentarzeichen vor der Zeile mit configDB entfernen.
Ist das denn so schwierig?
Hat nach dem Ändern des Services funktioniert. Habe davon nicht in der commandref gesehen.
Vielen Dank für die Hilfe.
Zitat von: TWART016 am 28 Juni 2020, 01:02:30
Habe davon nicht in der commandref gesehen.
Das muss auch nicht in der commandref stehen, da es nichts FHEM- oder gar configDB-spezifisches ist. Das Verwalten, Starten und Stoppen von Services fallen in den Bereich Linux-Kenntnisse und findet auf Betriebssystemebene statt.
Der Hinweis auf die notwendige Anpassung des Startskripts steht aber ausdrücklich im Umstiegs-Workshop, den Du ja oben schon mehrfach ins Feld geführt hast.
Dort steht geschrieben:
Zitat
Hinweis: Um die Änderung permanent zu machen, also dafür zu sorgen, dass auch nach einem reboot mit der configDB gearbeitet wird, muss im Startskript von fhem ... die entsprechende Startoption ausgewählt und die bisherige auskommentiert werden. Das Feature ist im Startskript bereits enthalten und dokumentiert.