1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

MariaDB connection refused Problem

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von tr.rpi, 26 Juni 2019.

  1. tr.rpi

    tr.rpi Benutzer

    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
     
  2. Dravion

    Dravion Benutzer

    Deine Firewall (iptables)
    Ohne offenen port (in und out) witds nix.
     
  3. tr.rpi

    tr.rpi Benutzer

    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
     
  4. Dravion

    Dravion Benutzer

    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.
     
  5. tr.rpi

    tr.rpi Benutzer

    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?
     
  6. Dravion

    Dravion Benutzer

    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.
     
  7. Dravion

    Dravion Benutzer

    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
     
  8. tr.rpi

    tr.rpi Benutzer

    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
     
  9. tr.rpi

    tr.rpi Benutzer

    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
     
  10. Dravion

    Dravion Benutzer

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden