FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: jschmitt am 27 März 2014, 23:33:30

Titel: DbLog Verbindungsproblem
Beitrag von: jschmitt am 27 März 2014, 23:33:30
Hallo,

ich habe Probleme mit DbLog. Ich kann mich nicht mit der Datenbank verbinden, das steht im logfile:
Can't connect to mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3306: Access denied for user 'fhem'@'xxx' (using password: YES)

Mit einem (Win)- Client geht das sehr wohl.

Ich habe fhem auf einem QNAP TS-219PII unter Optware installiert. Die Perl- Version ist 5.10.
Folgende Perl- Module sind installiert:
perl-dbd-mysql   4.006-1   4.006-1   DBD-mysql - The Perl Database Driver for MySQL
perl-dbi      1.620-1   1.620-1   DBI - The Perl Database Interface by Tim Bunce

meine db.conf sieht so aus:

#
# database configuration file
#
#
## for MySQL
################################################################
%dbconfig= (
        connection => "mysql:database=fhem;host=xxx.xxx.xxx.xxx;port=3306",
        user => "fhem",
        password => "fhem"
);
################################################################
#
## 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 => ""
#);
################################################################
~
~
~


in der Original- Beispiel- Datei db.conf ist in der Sektion "mysql" hinter
"***password => "fhempassword",***" ein Komma,
hinter denen der anderen aber keines.

Ich habe aber alles mit und ohne Komma ausprobiert, fhem immer neu gestartet, geht nicht.

Ich kann doch mit
LOG Ddefine DbLog /opt/fhem-5.4/db.conf  .*:.* aus dem Frontend das einrichten?
Dann kommt der Fehler oben. Oder muß ich das in fhem.cfg editieren und dann neu starten?
Oder stimmen die Perl- Module nicht?

Kann mir wer helfen?

Grüße,
Johannes
Titel: Antw:DbLog Verbindungsproblem
Beitrag von: rudolfkoenig am 28 März 2014, 12:07:52
ZitatKann mir wer helfen?
Ja, ein mysql-admin.

Wenn ich mich recht erinnere, spezifiziert man im mysql bei einem Account neben Benutzername und Passwort immer den Rechner auch mit, man kann ihn aber auch als * (oder so aehnlich) fuer alle Rechner eintragen.
-> Problem vermutlich nicht in der fhem Konfiguration, sonder in mysql zu suchen.
Titel: Antw:DbLog Verbindungsproblem
Beitrag von: betateilchen am 28 März 2014, 13:11:25
Mach mal folgendes:


mysql> select Host,User from mysql.user where user='fhem-dev';
+------+----------+
| Host | User     |
+------+----------+
| %    | fhem-dev |
+------+----------+
1 row in set (0.00 sec)


(fhem-dev natürlich durch den betreffenden Usernamen ersetzen!)

Wichtig ist, dass bei Host ein % Zeichen steht, damit es keine Einschränkung gibt, von welchem Host aus die Anfrage erfolgt.
Wenn das nicht hilft, würde ich in mysql das Logging aktivieren, um herauszufinden, warum der Verbindungsaufbau fehlschlägt.
Titel: Antw:DbLog Verbindungsproblem
Beitrag von: jschmitt am 29 März 2014, 00:46:45
So. Es geht jetzt (zumindest kann ich ein define xxx DbLog ohne Fehler absetzen).

Aber ich verstehe es immer noch nicht...

Hintergrund: alles läuft auf einer QNAP TS-219 PII mit mySQL Version 5.1.36

Die Datenbank ist erstellt mit dem script aus contrib/dblog/create....

Die legt den user an mit Rechten "@%". Und daran lag es.
Korrigiere ich die Rechte des users "fhem" von "%" auf "localhost", geht es.

Komischerweise konnte ich mich mit dem Windows- Client vorher problemlos verbinden ("%").

Jetzt habe ich einen user fhem@% UND einen fhem@localhost. Das geht.

Noch was: Eine andere Datenbank auf dem Server kann von python problemlos abgefragt werden:
con = MySQLdb.connect(host="xxx.xxx.xxx.xxx",user="data",passwd="xxx",db="xxx")

... geht problemlos.

Also in diesem Fall: Benutzerrechte explizit für user@localhost setzen.


Danke für die Antworten,

Viele Grüße,

Johannes

Noch was:

in der Original db.config in contrib steht:
#%dbconfig= (
#        connection => "Pg:database=fhem;host=localhost",
#        user => "fhemuser",
#        password => "fhempassword",
#);


ist das Komma hinter "fhempassword" nicht zuviel?
Ich habe es in meiner Konfiguration gelöscht.
Ich habe aber auch nicht getestet ob es Auswirkungen hat.
Titel: Antw:DbLog Verbindungsproblem
Beitrag von: betateilchen am 29 März 2014, 10:11:45
das Komma stört nicht.

Und das mit den Benutzerrechten die Du jetzt verbogen hast, ist auch nicht notwendig, das funktioniert auch mit dem % völlig korrekt. Wichtig ist nur, sowohl den Benutzernamen als auch das % wie in dem Beispielskript angegeben in Anführungszeichen zu setzen.