MariaDB connection refused Problem

tr.rpi

Benutzer
Beiträge
5
Hallo zusammen,




Ich brauche Hilfe von einem SQL Fachmann / -Frau.


Habe auf dem Raspberry Pi eine MariaDB, Webserver, NAS und FHEM laufen. Die SD Karte ist am Limit und da ich noch einen anderen Raspi hab, wollte ich die Systeme aufteilen, sprich FHEM soll auf den anderen Raspi umziehen.

Läuft an sich schon aber es gibt ein Problem mit dem Zugriff auf die Datenbank. Die soll für das FHEM Logging genutzt werden.


Ich bekomme keine Verbindung zu der Datenbank von dem 2. Rechner aus. Es kommt der Fehler


Code:
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.178.33' (111 "Connection refused")

Ich hab schon einige Tage mit Recherche zu dem Problem verbracht. Bin ja scheinbar nicht der Einzige damit.

Aber alle Tipps haben bislang nicht funktioniert. Bin ratlos.


Folgende Einstellungen hab ich gemacht:



Datei: /etc/mysql/my.cnf


Code:
bind-address = 0.0.0.0
Am Ende:
skip-networking=0
skip-bind-address

Datei: /etc/mysql/conf.d/mariadb.cnf


Am Ende:


Code:
skip-networking=0
skip-bind-address

Das ist zwar irgendwie doppelt gemoppelt aber die Werte scheinen eingelesen zu werden.


Ein

Code:
mysqld --print-defaults
liefert das:


Code:
mysqld would have been started with the following arguments:
--user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock 
--port=3306 --basedir=/usr --datadir=/media/nas/timo/mysql --tmpdir=/tmp --lc-messages
-dir=/usr/share/mysql --skip-external-locking --bind-address=0.0.0.0 --key_buffer=16M 
--max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover
=BACKUP --query_cache_limit=1M --query_cache_size=16M --log_error=/var/log/mysql/error.log
--expire_logs_days=10 --max_binlog_size=100M --skip-networking=0 --skip-bind-address


Damit sollte nach diversen Anleitungen der Zugriff auch von externen Clients möglich sein und nicht nur von "localhost".


Dann hab ich dem Benutzer fhemuser in der Datenbank Rechte eingeräumt über dieses SQL Statement: (natürlich mit dem richtigen Passwort)


Code:
GRANT ALL PRIVILEGES ON *.* TO 'fhemuser'@'192.168.178.%' IDENTIFIED BY '#####' WITH GRANT OPTION;



Diese User sind in der DB angelegt:


Code:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 333520
Server version: 10.0.36-MariaDB-0+deb8u1 (Raspbian)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> 'localhost';

+----------+---------------+
| User     | Host          |
+----------+---------------+
| fhemuser | %             |
| root     | %             |
| timo     | %             |
| fhemuser | 192.168.178.% |
| timo     | 192.168.178.% |
+----------+---------------+

6 rows in set (0.02 sec)


Was kann das Problem noch sein und wie kann ich es lösen?


Danke und Gruß


Timo
 
Werbung:
Hi,
danke für die Antwort.
Hab mich etwas an der Konfiguration versucht. Das ist gaaanz dünnes Eis :)
Damit funktioniert es noch nicht:

Server:
Code:
sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             RPI-FHEM.fritz.box   tcp spts:1024:65535 dpt:mysql state NEW,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  RPI-FHEM.fritz.box   anywhere             tcp spt:mysql dpts:1024:65535 state ESTABLISHED

Client:
Code:
 sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             RPI-FHEM.fritz.box   tcp spt:mysql dpts:1024:65535 state ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  RPI-FHEM.fritz.box   anywhere             tcp spts:1024:65535 dpt:mysql state NEW,ESTABLISHED

Hast du noch einen heißen Tipp?
Danke und Gruß
Timo
 
Gib mal ein als root folgendes ein
iptables -A INPUT -p tcp -m tcp -m multiport --dports 3306 -j ACCEPT

Danach versuch dich noch mal mit MySQL zu verbinden und schau wie es läuft.
 
Gib mal ein als root folgendes ein
iptables -A INPUT -p tcp -m tcp -m multiport --dports 3306 -j ACCEPT

Danach versuch dich noch mal mit MySQL zu verbinden und schau wie es läuft.
Hab ich probiert - ohne Erfolg :-(
Kann man die Regeln der Firewall auch anders testen, um auszuschließen oder sicher zu stellen, dass es daran liegt?
 
Gib mal nacheinander folgendes ein:

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

Danach ist deine Linux Firewall komplett deaktiviert und nichts wird mehr
gefiltert (ist nur temporär, wenn Du neustartest ist die alte Einstellung wieder da)

Versuch Dich jetzt noch mal mit MySQL zu verbinden, am besten mit dem konsolen Client
von einen anderen Computer z.B so: mysql -u DeinUser -p -h 192.168.2.77 <-- oder was immer dein MySQL Server
für eine IP hat. Du wirst nach einem Password gefragt werden, gibt das password für den MySQL user ein. Und poste dann die Meldungen hier.
 
Habs gerade mal auf meinem Pi3 ausprobiert. Wie es ausschaut gibts noch mehr Stolpersteine, unter anderen diese:

Config datei: /etc/mysql/my.cnf

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
änder das mal zu
bind-address = *

und restarte MySQL/ oder MariaDB

z.B mit:
systemctl restart mysql.service

und checke ob der wirklich läuft mit
systemctl status mysql.service

Danach ist MySQL/MariaDB technich erreichbar aber der User benötigt login rechte.
Der MySQL Root User hat keine Remote IP Login rechte, deshalb solltest Du einen anderen Admin
user erstellen,

1) Tippe mysql ein
2) Lege einen neuen User an mit:
CREATE USER 'deinuser'@'%' IDENTIFIED BY 'letmein';
GRANT ALL PRIVILEGES ON *.* TO 'deinuser'@'%'
WITH GRANT OPTION;

Danach solltest Du direkt mit diesem User von einem anderen Rechner in deinen MySQL/MariaDB Server einloggen können

z.B so: mysql -u deinuser -h 220.240.130.2 -p
 
Hi, erstmal danke für deine Mühe!
Ich hab deine Tipps ausprobiert. Den SQL Teil hatte ich auch schon so gemacht (siehe Post 1).
Leider funktioniert es trotzdem nicht.
Ich vermute da ist noch irgendwas anderes ziemlich kaputt auf dem System.
Ich werde wohl mal ein frisches System aufsetzen müssen und versuche es dann noch mal. Ich komme aber leider nur sporadisch dazu.
Ich gebe ein Update, wenn sich was getan hat.
Danke und Gruß Timo
 
Kurzes Update. Ich habe auf dem Client ein Upgrade auf buster gemacht.
Seltsamerweise funktioniert der Zugriff auf die Datenbank jetzt.
Verstehe wer will. Scheinbar lag es an irgendwelchen Einstellungen am Client. An welchen kann ich nicht nachvollziehen. Hauptsache es geht jetzt.

Danke für die Hilfe.
VG Timo
 
Werbung:
Hört sich für mich danach an, als ob Mysqld gar nicht lief. Ist immer wichtig mit systemctl status mysql.service zu prüfen ob er läuft.
Wenn irgend etwas an der config falsch ist, kann man Mysqld auch im interactive Modus starten, dann gibt der jede Menge Infos darüber
aus was passiert und wo es Fehler gibt.
 
Zurück
Oben