an die mySQLer unter Euch (configDB)

Begonnen von DerFrickler, 08 Februar 2017, 21:28:08

Vorheriges Thema - Nächstes Thema

DerFrickler

Wie hat eine mySQL Tabelle für configDB auszusehen? In der Comandref steht lediglich das diese leer sein muss. Aber ich gehe mal davon aus dass ich neben einem

CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

die Rechte (GRANT) für den fhemuser noch erweitern muss? Oder? ein

GRANT SELECT, INSERT, DELETE, UPDATE ON `configDB`.* TO 'fhemuser'@'%';

aus der DbLog Einrichtung wird da doch sicherlich nicht ausreichen?

Danke,
Karsten

budy

Moin Karsten,

wenn ich mich recht entsinne, dann hat configDB alles von alleine angelegt gehabt und auch komplett automatisch befüllt.
Ich habe jedenfalls keine einzige der Tabellen angelegt, die hinterher drin waren... ;)

Gruß,
Stephan
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

DerFrickler

#2
ein direktes

configdb migrate

führt zu folgendem Log-Eintrag

DBI connect('database=configDB;host=localhost;port=3306','fhem',...) failed: Unknown database 'configDB' at configDB.pm line 677.

und einem Absturz von FHEM

DeeSPe

Zitat von: DerFrickler am 08 Februar 2017, 21:28:08
Wie hat eine mySQL Tabelle für configDB auszusehen? In der Comandref steht lediglich das diese leer sein muss. Aber ich gehe mal davon aus dass ich neben einem

CREATE DATABASE `configDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

die Rechte (GRANT) für den fhemuser noch erweitern muss? Oder? ein

GRANT SELECT, INSERT, DELETE, UPDATE ON `configDB`.* TO 'fhemuser'@'%';

aus der DbLog Einrichtung wird da doch sicherlich nicht ausreichen?

Danke,
Karsten

Laut commandref sollte das ausreichen.
ZitatThe database tables will be created automatically.

Die configDB.conf Datei hast Du entsprechend Deiner Datenbank eingerichtet?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

chris1284

#4
Zitat von: DerFrickler am 08 Februar 2017, 21:28:08
In der Comandref steht lediglich das diese leer sein muss.
das ist falsch. in der cmd-ref steht auch You must have access to a SQL database. somit must DU dich um den zugriff auf die db kümmern.
den kannst du ja auch erstmal ohne fhem testen, wenn das geht prüfe mal dein configDB.conf auf den richtigen pfad, rechtw und den richtigen inhalt

ZitatIMPORTANT:
    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

DerFrickler

Hallo zusammen,

ich möchte das Thema noch mal aufgreifen, da ich hier leider nicht zu einem Ergebnis gekommen bin.

Es bleibt beim Fehler:
DBI connect('database=configDB;host=localhost;port=3306','fhem',...) failed: Access denied for user 'fhem'@'%' to database 'configDB
' at configDB.pm line 691.

Während es mit sqlite3 ein Kinderspiel ist, macht mir mySQL zu schaffen. Laut Commandref heisst es:

You must have access to a SQL database.

Was bedeutet das jetzt genau? Müssen der MySQL root-user und der fhem-user identisch sein? Soll heissen dass ich den MySQL root-user in der configDB.conf angeben muss? Der fhem-user ist in MySQL wegen DBLog bereits bekannt, natürlich nicht für die table configdb die ja erzeugt werden soll.

Vielen Dank für Eure Hilfe.


CoolTux

Hast Du denn überhaupt einen User eingerichtet? Wenn ja, hast du dem User gleich ein Passwort mitgegeben?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Benni

Zitat von: DerFrickler am 06 Juli 2017, 23:08:52
DBI connect('database=configDB;host=localhost;port=3306','fhem',...) failed: Access denied for user 'fhem'@'%' to database 'configDB
' at configDB.pm line 691.

Du musst auf deiner MySQL-Instanz ein leeres Datenbank-Schema (eine Datenbank) mit Namen 'configDB' anlegen.
Dann musst du auf der Datenbank einen User anlegen, der bspw. fhemuser heißt und ihm ein Passwort geben.
Wichtig ist du solltest den User so einrichten, dass er nicht nur von localhost aus Zugriff auf die Datenbank haben darf, sondern von überal her (fhemuser@%)
Weiterhin benötigt dieser User entsprechnde Berechtigungen auf das oben angelegte Datenbank-Schema: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER sollten genügen. Du kannst dem User aber zur Not auch alle Berechtigungen auf das Schema geben (Achtung: Nicht global! Nur für dieses Schema!)

Dann sollte das mit der, in der commandref angegebenen configDB.conf für MySQL funktionieren.
Host, ggf. Port und natürlich Passwort des oben angelegten Datenbank-Users  noch korrekt eintragen!

%dbconfig= (
connection => "mysql:database=configDB;host=db;port=3306",
user => "fhemuser",
password => "Passwort des Datenbank-Users",
);


Das ist keine Raketenwissenschaft!

Gruß Benni.


DerFrickler

#8
Danke, möglicherweise sollte man diese Ausführungen mal in den Beschreibungen ergänzen.

Soweit so gut.. Gibt es bezüglich der Längen der Datenwörter Einschränkungen?

2017.07.07 10:18:44 1: PERL WARNING: DBD::mysql::st execute failed: Data too long for column 'DEVICE' at row 1 at configDB.pm line 705.
DBD::mysql::st execute failed: Data too long for column 'DEVICE' at row 1 at configDB.pm line 705.

Gruß und Danke!

Edit:

aus der configDB
   DEVICE   varchar(64)   utf8_bin

auf der fhem (DbLog)
   DEVICE   varchar(64)   utf8_bin   

Demnach frage ich mich wo da ein Problem auftauchen kann?

CoolTux

https://svn.fhem.de/trac/browser/trunk/fhem/contrib/dblog/db_create_mysql.sql

Eventuell wäre es hilfreich wenn man sich vorher ein wenig mit den Grundlagen einer MySQL Datenbank beschäftigt.
Oder WENIGSTENS sich die Scripte einmal anschaut und was man nicht versteht in eine Suchmaschine ein gibt.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DerFrickler

Wenn in einer Anleitung beschrieben steht dass alles von selbst erledigt wird und es dennoch einiges an Vorarbeit gibt, dann darf man schon mal etwas verwirrt sein. Zudem glaube ich das aktuelle Problem eingrenzen zu können, was jetzt nichts mehr mit der Datenbank selbst zu tun hat.

CoolTux

Zitat von: DerFrickler am 07 Juli 2017, 09:56:20
aus der configDB
   DEVICE   varchar(64)   utf8_bin

auf der fhem (DbLog)
   DEVICE   varchar(64)   utf8_bin   

Demnach frage ich mich wo da ein Problem auftauchen kann?

Dann schaue doch einfach mal wie Dein Schema tatsächlich angelegt wurde. Eventuell passt da was nicht.
http://mizine.de/mysql/mysql-tabellenstruktur-anzeigen-lassen/
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DerFrickler

#12
Das werde ich gleich noch mal explizit auf der console nachschauen. Die Daten aus dem vorherigen Post stammen aus phpMyAdmin, sollten dann aber hoffentlich auch korrekt sein. Ich vermute (da ich wirklich lange device Namen benutze) dass es irgendwo einen device Namen in meiner config gibt, der nicht über DbLog erfasst wird und demnach nie Probleme gemacht hat. Die FB-DECT Geräte sind solche Kandidaten. Sqlite3 hat diesbezüglich nie Problem gemacht. Das war aber auch schon eine Phänomen was bei dem DbRep Modul aufgedeckt wurde.

CoolTux

Zitat von: DerFrickler am 07 Juli 2017, 11:06:33
Das werde ich gleich noch mal explizit auf der console nachschauen. Die Daten aus dem vorherigen Post stammen aus phpMyAdmin, sollten dann aber hoffentlich auch korrekt sein. Ich vermute (da ich wirklich lange device Namen benutze) dass es irgendwo einen device Namen in meiner config gibt, der nicht über DbLog erfasst wird und demnach nie Probleme gemacht hat. Die FB-DECT Geräte sind solche Kandidaten. Sqlite3 hat diesbezüglich nie Problem gemacht. Das war aber auch schon eine Phänomen was bei dem DbRep Modul aufgedeckt wurde.

Ach so, das was Du da angegeben hattest war schon ein Auszug aus der Tabellenstruktur direkt aus der MySQL Datenbank? Nur halt eben mit phpmyadmin angeschaut?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DerFrickler

genau.

Jetzt halt der Gedankengang was Datenmässig in der einen stehen kann und was in der anderen. Demnach muss ich mal alle Devices aus der hem.cfg der Länge nach überprüfen. Ist jetzt hat etwas Fleissarbeit.