Keine Verbindung zum SQL Server

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich bin beim meinen Versuchen auf eine anders problem gestoßen

    habe 4 Pi`s im Einsatz jeder ist mit apache, php und mysql ausgerüstet

    da auf jeden ein anderes Betriebssystem läuft beschränke ich mich auf 2 Stück hier:

    Aufgeführte Benutzer und Passwörter passen für Anmeldung sowie auch vollen Zugriff auf Datenbank

    Pi 1 ist ein 4er mit Bullseye / IP = 192.168.101.207, Benutzer = bullseye, Passwort = bullseye, database = holzauge

    Pi 2 ist ein 3er mit Jessie / IP = 192.168.101.229, Benutzer = jessie, Passwort = jessie, database = bandwurm

    Pi 1 ist meine Backmühle, sie soll als Backup für die anderen Pi`sals Sicherung dienen, aber ist nicht immer im Einsatz.

    Pi 2 ist meine Frontend Mühle, sie nimmt Informationen auf und Sichert sie in der Lokalen Datenbank

    ab und an schließe ich meinen Pi 1 wieder in meinen Lokalen Netz an dann soll Pi 2 alles was bis dahin gesichert wurde nach Pi über tragen und neue dazu gekommen auch in Pi 1 schreiben bis Pi 1 wieder getrennt wird

    Pi 1 ist in Planung durch eine Suse Mühle ersetzt zu werden, aber es muß erst im kleinen laufen

    ##############################################################################################################################

    ich habe beim Pi 1 unter

    /etc/mysql/mariadb.conf.d/50-server.cnf

    bind-address = 0.0.0.0

    gest und neu gestartet

    aber ich ketzann keine Verbindung aufbauen ( ich frage über php/html den Zugriff ab und lasse es mir optisch darstellen

    $dbhost = "localhost";

    $dbuser = "jessie";

    $dbpass = "jessie";

    $dbdata = "bandwurm";

    $ixhost = "192.168.101.207";

    $ixuser = "bullseye";

    $ixpass = "bullseye";

    $ixdata = "holzauge";

    $link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbdata);
    if (mysqli_connect_errno()) { $lodb = "no"; } else { $lodb = "ok"; };
    $lixk = mysqli_connect($exhost, $ixuser, $ixpass, $ixdata);
    if (mysqli_connect_errno()) { $ixdb = "no"; } else { $ixdb = "ok"; }

    if($lodb == "ok"){ echo "<font size=\"-3\" color=\"".$far01."\">Pi3B+ PiHole Pi3B+</font>&nbsp;"; } else { echo "<font size=\"-3\" color=\"".$far02."\">Pi3B+ PiHole Pi3B+</font>&nbsp;"; },
    if($ixdb == "ok"){ echo "<font size=\"-3\" color=\"".$far01."\">Pi4B Debian</font>&nbsp;"; } else { echo "<font size=\"-3\" color=\"".$far02."\">DebianPi4B Debian</font>&nbsp;"; }

    Wie im Bild zu sehen ist mein gewüchter Zugriff Rot

    Wo könnte mein Fehler sein ?

  • linuxnewbie Das heraus zu finden wäre ja einfacher, wenn Du nicht einfach jeglichen Fehlercode auf die Ausgabe von "no" reduzierst, sondern vielleicht mal den tatsächlichen Fehlercode und auch den dazugehörigen Fehlertext ausgeben/anzeigen würdest.

    Und sofern der Anmeldeversuch bis zum Datenbankserver durchkommt, gibt es dort auch ein Protokoll wo man reinschauen kann.

    “Since, in the long run, every planetary society will be endangered by impacts from space, every surviving civilization is obliged to become spacefaring — not because of exploratory or romantic zeal, but for the most practical reason imaginable: staying alive.” — Carl Sagan, Pale Blue Dot

  • #!/usr/bin/python
    # -*- coding: utf8 -*-

    import RPi.GPIO as GPIO
    import MFRC522
    import signal
    import datetime
    import time
    import MySQLdb
    #import mysql.connector as mc
    import os
    #import lcddriver

    continue_reading = True
    def end_read(signal,frame):
       global continue_reading
       print ("\nProgramm beendet!")
       continue_reading = False
    #    lcd.lcd_clear()
       GPIO.cleanup()

    signal.signal(signal.SIGINT, end_read)
    MIFAREReader = MFRC522.MFRC522()

    print ("Programm gestartet zum Karten scannen!")

    #Alle Programme Begin
    while continue_reading:
       (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
       (status,uid) = MIFAREReader.MFRC522_Anticoll()
       
       if status == MIFAREReader.MI_OK:
           card = str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3])
           
           db = MySQLdb.connect(host = "192.168.101.207", user = "bullseye", passwd = "bullseye", db = "holzauge")
           #connection = mc.connect(host = "192.168.101.207", user = "bullseye", passwd = "bullseye", db = "holzauge")
    ---
    python dbt.py
    /home/pi/mfrc/MFRC522.py:151: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(pin_rst, GPIO.OUT)
    Programm gestartet zum Karten scannen!
    Traceback (most recent call last):
    File "dbt.py", line 35, in <module>
    db = MySQLdb.connect(host = "192.168.101.207", user = "bullseye", passwd = "bullseye", db = "holzauge")
    File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
    File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
    _mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '192.168.101.207' (101)")


    #-#-#-#-#

    #!/usr/bin/python3
    # -*- coding: utf8 -*-

    import RPi.GPIO as GPIO
    import MFRC522
    import signal
    import datetime
    import time
    #import MySQLdb
    import mysql.connector as mc
    import os
    #import lcddriver

    continue_reading = True
    def end_read(signal,frame):
       global continue_reading
       print ("\nProgramm beendet!")
       continue_reading = False
    #    lcd.lcd_clear()
       GPIO.cleanup()

    signal.signal(signal.SIGINT, end_read)
    MIFAREReader = MFRC522.MFRC522()

    print ("Programm gestartet zum Karten scannen!")

    #Alle Programme Begin
    while continue_reading:
       (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
       (status,uid) = MIFAREReader.MFRC522_Anticoll()
       
       if status == MIFAREReader.MI_OK:
           card = str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3])
           
           #db = MySQLdb.connect(host = "192.168.101.207", user = "bullseye", passwd = "bullseye", db = "holzauge")
           connection = mc.connect(host = "192.168.101.207", user = "bullseye", passwd = "bullseye", db = "holzauge")
    ---
    python3 dbt.py
    /home/pi/mfrc/MFRC522.py:151: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(pin_rst, GPIO.OUT)
    Programm gestartet zum Karten scannen!
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/mysql/connector/network.py", line 386, in open_connection
    self.sock.connect(sockaddr)
    OSError: [Errno 101] Network is unreachable

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "dbt.py", line 36, in <module>
    connection = mc.connect(host = "192.168.101.207", user = "bullseye", passwd = "bullseye", db = "holzauge")
    File "/usr/lib/python3/dist-packages/mysql/connector/__init__.py", line 157, in connect
    return MySQLConnection(*args, **kwargs)
    File "/usr/lib/python3/dist-packages/mysql/connector/connection.py", line 122, in __init__
    self.connect(**kwargs)
    File "/usr/lib/python3/dist-packages/mysql/connector/connection.py", line 431, in connect
    self._open_connection()
    File "/usr/lib/python3/dist-packages/mysql/connector/connection.py", line 394, in _open_connection
    self._socket.open_connection()
    File "/usr/lib/python3/dist-packages/mysql/connector/network.py", line 389, in open_connection
    errno=2003, values=(self.get_address(), _strioerror(err)))
    mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '192.168.101.207:3306' (101 Network is unreachable)

    Hier Code und Ausführung

  • Nach dem Code und den Fehlermeldungen ist Pi 1 mit der IP 192.168.101.207 das Ziel mit der DB drauf. Wo läuft das Programm, auf Pi 1 oder Pi 2?
    Lt.

    mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '192.168.101.207:3306' (101 Network is unreachable)

    ist diese IP nicht erreichbar, oder der Port ist nicht belegt. 3306 ist die voreingestellte Port-Nummer für MySQL.
    Zur Kontrolle einmal auf dem RasPI mit der IP 192.168.101.207 dieses eingeben:

    Code
    sudo netstat -tulpn|egrep 3306

    Das sollte da so aussehen:

    Code
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      ***/mysqld

    bind-address ist die IP, auf dem die DB "hört", also Aufrufe entgegennimmt. "0.0.0.0" ist eine spezielle "IP", die bedeutet, dass die DB auf alle IPs reagiert.
    Hier also z.B. sowohl auf 192.168.101.207, als auch auf 127.0.0.1.

    Edited 2 times, last by pisel (July 10, 2024 at 9:00 PM).

  • bind-address = 0.0.0.0 ist eingestellt und neu gestartet

    wie oben genannt :

    sudo netstat -tulpn|egrep 3306
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      694/mariadbd        

    es spielte keine rolle von welchen ich auf welchen zugreife, ich habe die bind-... auf allen eingestellt weil jeder seine aufgabe hat

    aber mein problem ist dadurch nicht gelöst

  • wie oben genannt :

    sudo netstat -tulpn|egrep 3306
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      694/mariadbd  

    es spielte keine rolle von welchen ich auf welchen zugreife, ich habe die bind-... auf allen eingestellt weil jeder seine aufgabe hat

    aber mein problem ist dadurch nicht gelöst

    Starte mal auf diesem Gerät (auf dem auf Port 3306 gelauscht wird):

    Code
    sudo tcpdump -c 50 -vvveni eth0 port 3306

    (eth0 evtl. anpassen) und mach jetzt von außen einen Verbindungsversuch zu diesem Port. Was zeigt tcpdump, nach dem Verbindungsversuch an?

  • tcpdump nicht gefunden

    Code
    sudo apt install tcpdump
    sudo dpkg --configure -a
  • sudo tcpdump -c 50 -vvveni eth0 port 3306
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes

    Zu welchem Zeitpunkt? Nach dem missglückten Verbindungsversuch?
    Mach dann mal einen Ping und einen Portscan (aus dem Subnetz 192.168.101.0/24 bzw. aus dem W/LAN):

    Code
    ip n s
    ping -c 3 192.168.101.207
    nc -zv 192.168.101.207 3306
    # oder
    sudo nmap -sS 192.168.101.207 -p3306

    Wie ist nach dem Portscan, die Ausgabe von tcpdump und die von "ip n s" bzw. der Ping?

  • >ip n s

    ist IP von Ziel nicht Sichtbar

    >ping 192.168.101.207

    wird gefunden mit guten werten

    >ping -c 192.168.101.207

    ping: invalid argument: '192.168.101.207'

    >nc -zv 192.168.101.207

    bash: nc: Kommando nicht gefunden.

    >sudo nmap -sS 192.168.101.207 -p3306

    sudo: nmap: Befehl nicht gefunden

  • >ping -c 192.168.101.207

    ping: invalid argument: '192.168.101.207'

    >nc -zv 192.168.101.207

    bash: nc: Kommando nicht gefunden.

    Du musst schon richtig hinschauen, was ich geschrieben habe:

    Quote

    ping -c 3 192.168.101.207

    nc -zv 192.168.101.207 3306

    Code
    sudo apt install netcat-traditional
  • sorry ohne brille kommt das mal vor

    so ping -c 3 ... = alles ok super werte

    und

    nc -zv 192.168.101.207 3306
    raspberrypi-2.fritz.box [192.168.101.207] 3306 (mysql) open

    all die ganzen schritte zeigen mir das es mit der netzwerkverbindung alles ok ist

    es hatte mal funktioniert vor einiger zeit, aber auf grund ein fehler habe ich alles neu gemacht ( neue images aufgespielt und alles wieder so ein gestellt nach und nach )

    damals war ein suse mühle mein ziel aber auf einen anderen Pi3b klappte es auch


    ich vermute den fehler bein Pi 1 ( Bullseye )

  • nc -zv 192.168.101.207 3306
    raspberrypi-2.fritz.box [192.168.101.207] 3306 (mysql) open

    all die ganzen schritte zeigen mir das es mit der netzwerkverbindung alles ok ist

    D. h. beim Portscan mit nc gibt es auch eine Ausgabe von tcpdump, oder?
    ... und wenn Du mit dem DB-Client auf den Port 3306 zugreifst, gibt es keine Ausgabe von tcpdump, oder?

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!