FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisK am 26 Februar 2015, 19:43:43

Titel: DbLog in externe DB schreiben lassen
Beitrag von: ChrisK am 26 Februar 2015, 19:43:43
Hallo zusammen,

ich versuche gerade ein DbLog zu aktivieren, wobei die MySQL-DB auf einem Server liegt, die nicht direkt im Netzwerk sondern auf einem gehosteten Server liegt.

Folgendes habe ich schon gemacht:
- db.conf entsprechend angepasst
- define myDbLog DbLog db.conf  .*:.* eingebaut (wobei der Pfad korrekt ist)
- die Tabellen in der externen DB angelegt
- der Zugriff auf die DB funktioniert problemlos über andere Tools, wie z.B. MySQL Workbench

Der Status des DbLogs ist immer (mehrere Neustarts schon gemacht):
myDbLog waiting for connection

Im Log steht nach dem Neustart:
2015.02.26 19:27:34 3: Connecting to database mysql:database=xxx;host=domain;port=3306 with user yyy

Nachdem ich jetzt einiges selbst probiert habe und auch versucht habe im Internet was dazu zu finden, habe ich den Eindruck, dass die DB auf dem gleichen Server liegen muss. Ist das so oder habe ich irgendwo was übersehen?
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: Vertex am 26 Februar 2015, 20:14:40
Zitat- der Zugriff auf die DB funktioniert problemlos über andere Tools, wie z.B. MySQL Workbench
Hast du das lokal versucht oder remote?

Aber mal ganz ehrlich, eine Datenbank im Internet zugänglich zu machen, ist keine gute Idee.
Besser wäre es z.B. vom Server aus einen VPN-Tunnel zu deinem Heimrechner aufzubauen und den Datenbankzugriff dann auf das VPN-Netz zu beschränken.

Gruß
Vertex
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: ChrisK am 26 Februar 2015, 20:21:40
Danke für die Antwort Vertex!
Zitat von: Vertex am 26 Februar 2015, 20:14:40
Hast du das lokal versucht oder remote?
Lokal, mit den Zugangsdaten, die ich auch in der db.conf verwende(n will).

Zitat von: Vertex am 26 Februar 2015, 20:14:40
Aber mal ganz ehrlich, eine Datenbank im Internet zugänglich zu machen, ist keine gute Idee.
Besser wäre es z.B. vom Server aus einen VPN-Tunnel zu deinem Heimrechner aufzubauen und den Datenbankzugriff dann auf das VPN-Netz zu beschränken.
Da gebe ich Dir im Prinzip recht.
Mir geht es nur darum, dass ich bestimmte Infos "raus" schreibe. Da wäre sowas wie Temperatur in Raum x oder Rollo-Status.
Es soll auch nur in diese Richtung gehen, also fhem schreibt raus aber von draußen kann nichts an fhem übergeben werden.
Ich hätte gedacht, dass das eine relativ sichere Lösung ist. So in Richtung push-notification.
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: SmartFan am 26 Februar 2015, 21:22:16
Hallo,

hatte die Tage ein ähnliches Problem mit meiner synology und MySQL. Hier hat die Installation eines MySQL Clients auf dem Rechner wo auch fhem läuft die Lösung gebracht.

Gruss Michael
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: Wzut am 26 Februar 2015, 21:47:40
Zitat von: ChrisK am 26 Februar 2015, 19:43:43
habe ich den Eindruck, dass die DB auf dem gleichen Server liegen muss. Ist das so

Nein , bei mir laufen die div FHEMs und die MySQL auf verschiedenen Hosts.
Sind deine Angaben in der db.conf alle richtig ?
Darf der MySQL Host remote Verbindungen annehmen ? (my.cnf)
Hat der User die nötigen Rechte (lokal oder any host) hat er die Rechte für die DB und die Tabelle ?
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: betateilchen am 26 Februar 2015, 22:09:14
Du musst in Deiner MySQL Konfiguration den Zugriff auf den Datenbank von aussen zulassen. Standardmäßig (wenn MySQL neu installiert und dieser Parameter nicht geändert wurde) ist der Zugriff auf localhost begrenzt.



/etc/mysql/my.cnf

streiche: bind-address = 127.0.0.1

setze: bind-address = 0.0.0.0

danach den MySQL Server neustarten.

Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: ChrisK am 27 Februar 2015, 12:27:34
Zitat von: SmartFan am 26 Februar 2015, 21:22:16
Hallo,

hatte die Tage ein ähnliches Problem mit meiner synology und MySQL. Hier hat die Installation eines MySQL Clients auf dem Rechner wo auch fhem läuft die Lösung gebracht.

Gruss Michael
Ich habe jetzt MySQL Workbench (https://apps.ubuntu.com/cat/applications/mysql-workbench/) auf dem FHEM-Server installiert (bisher nur auf einem Laptop) und auch hier klappt die Verbindung problemlos.

Zitat von: betateilchen am 26 Februar 2015, 22:09:14
Du musst in Deiner MySQL Konfiguration den Zugriff auf den Datenbank von aussen zulassen. Standardmäßig (wenn MySQL neu installiert und dieser Parameter nicht geändert wurde) ist der Zugriff auf localhost begrenzt.
Die Datenbank liegt auf einem managed Server bei all-inkl. Ich kann diese Art der Konfiguration zwar nicht vornehmen, aber dadurch dass die DB von MySQL Workbench aus erreichbar ist, denke ich, dass der Zugriff von außen zugelassen sein muss. Oder?


Zitat von: Wzut am 26 Februar 2015, 21:47:40
Nein , bei mir laufen die div FHEMs und die MySQL auf verschiedenen Hosts.
Sind deine Angaben in der db.conf alle richtig ?
Darf der MySQL Host remote Verbindungen annehmen ? (my.cnf)
Hat der User die nötigen Rechte (lokal oder any host) hat er die Rechte für die DB und die Tabelle ?
Angaben in der db.conf sind richtig (sind zumindest die gleichen mit denen es im MySQL Workbench klappt).
"Remote Verbindungen": jepp (auch wieder wegen Zugriff über Workbench).
Die "nötigen Rechte" sollte der Benutzer haben. Laut db_create_mysql.sql braucht er doch nur select, insert, delete und update auf die Tabellen, oder braucht der Benutzer noch mehr?

Vielen Dank auf jeden Fall für Eure Unterstützung bisher!
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: MrRight am 27 Februar 2015, 15:46:50
Die von Dir genannten Rechte sollten reichen. Es wäre schon hilfreich, wenn Du deine db.conf und das komplette "define" hier posten würdest... (natürlich ohne Passwort...)

gruss, Carsten
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: ChrisK am 27 Februar 2015, 17:22:44
EDIT:
So, und nachdem ich jetzt den FHEM-Server neu gestartet habe, damit ich ein Log für ab dem Neustart raus kopieren kann, verbindet er sich mit der Datenbank.
Sorry, wenn es nur an dem Neustart gelegen hat. Ich muss mir merken, dass ein Ubuntu/Linux viel häufiger Neustarts braucht auch ohne es zu sagen.

Zitat von: MrRight am 27 Februar 2015, 15:46:50
Die von Dir genannten Rechte sollten reichen. Es wäre schon hilfreich, wenn Du deine db.conf und das komplette "define" hier posten würdest... (natürlich ohne Passwort...)
Du hast natürlich recht, ich hatte gehofft, alles relevante direkt gepostet zu haben.

Also, hier die db.conf:
#
# database configuration file
#
#
## for MySQL
################################################################
%dbconfig= (
connection => "mysql:database=xxx;host=domain.net;port=3306",
user => "xxx",
password => "yyy",
);
################################################################
#
## for PostgreSQL
################################################################
#%dbconfig= (
#        connection => "Pg:database=fhem;host=localhost",
#        user => "fhemuser",
#        password => "fhempassword"
#);
################################################################
#
## for SQLite (username and password stay empty for SQLite)
################################################################
#%dbconfig= (
#        connection => "SQLite:dbname=/opt/fhem/fhem.db",
#        user => "",
#        password => ""
#);
################################################################


Und hier die Definition:
define myDbLog DbLog /opt/fhem/contrib/dblog/db.conf .*:.*
attr myDbLog room zLogDateien

Die db.conf habe ich erstmal da gelassen, wo die Beispiel-Datei war. Daran wird's aber nicht liegen, oder?

Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: Vertex am 27 Februar 2015, 22:06:21
ZitatSorry, wenn es nur an dem Neustart gelegen hat. Ich muss mir merken, dass ein Ubuntu/Linux viel häufiger Neustarts braucht auch ohne es zu sagen.

Linux benötigt normalerweise nie Neustarts, wie du das vielleicht von Windows kennst, aber wenn du die Konfiguration eines Dienstes/Daemons änderst musst du ggf. seine Konfiguration neu laden - darauf weist dich Linux aber nicht hin. Man macht das dann üblicherweise mittels:

sudo service <ServiceName> <Command z.B. restart, stop, start>

Oder über die Weboberfläche deines Anbieters, wenn du keinen Root Zugriff hast.

Gruß
Vertex
Titel: Antw:DbLog in externe DB schreiben lassen
Beitrag von: ChrisK am 02 März 2015, 15:08:49
Zitat von: Vertex am 27 Februar 2015, 22:06:21
...
Oder über die Weboberfläche deines Anbieters, wenn du keinen Root Zugriff hast.
...
Sorry, hab mich wohl ein bisschen missverständlich ausgedrückt. Ich musst nicht den Server neu starten, wo MySQL drauf läuft, sondern den Server, wo FHEM drauf läuft (also der zuhause steht). Das ist ja das komische.