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?
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
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.
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
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 ?
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.
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!
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
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?
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
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.