Verbindung zur Datenbank scheitert (MariaDB)

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Manic
User
Beiträge: 10
Registriert: Dienstag 3. Juli 2018, 09:59

Hallo,
ich habe jetzt noch einen versuch gemacht, scheitere aber an der gleichen Sache wieder.
Der PHP Code dazu lautet:

Code: Alles auswählen

import os, sys, time
import RPi.GPIO as GPIO
import mysql.connector as mariadb
mariadb_connection = mariadb.connect(host='RaPi', port=3306, user='dbuser', Password='passwort', database='NameDatenbank')
cursor = mariadb_connection.cursor()
Wenn der Raspi startet dann ist die erste Meldung am Ende des Dumps zum Datenbankzugriff die vorletzte Zeile des von mir geposteten Codes (mariadb_connection = ...)

Die letzte Zeile der Fehlermeldung steht:
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL Server on'RaPi:3306' (111 Connection refused)

Bei database steht der Name der Datenbank drin, nicht der Name der Tabelle in der Datenbank.

Wie kann ich den Fehler jetzt noch eingrenzen?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Manic: Schauen was die Protokolldatei von MariaDB dazu sagt.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Manic
User
Beiträge: 10
Registriert: Dienstag 3. Juli 2018, 09:59

Welche Protokolldatei meinst Du bzw wo finde ich die?

Ich habe mal kurz in der Hilfe zu MariaDB geschaut aber da scheint es ja unterschiedliche zu geben.
Manic
User
Beiträge: 10
Registriert: Dienstag 3. Juli 2018, 09:59

Ich habe nun mal geschaut. In Pfad /var/lib/mysql/ sollte laut meiner Info eine hostname.err (also RaPi.err) sein. Da ist aber nichts.

In den angegebenen Verzeichnis finde ich folgende Einträge:

NameDatenbank (also den von mir in phpmyadmin angelegten Datenbank)
aria_log.00000001
aria_log_control
Debian-10.1.flag
ibdata1
ib_logfile0
ib_logfile1
multi-master.info
mysql
Performance_schema
phpmyadmin
tc.log
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Hast Du denn den Server so konfiguriert, dass er auch auf Verbindungen von aussen lauscht, und nicht nur auf localhost bzw. 127.0.0.1?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Manic
User
Beiträge: 10
Registriert: Dienstag 3. Juli 2018, 09:59

Hallo,

das habe ich versucht. Aber wie es der Teufel will komm ich hier nicht zurecht bzw bin verwirrt.

Laut Doku von Mariadb sollte das doch das hier sein:
https://mariadb.com/kb/en/library/confi ... nt-access/

Ich finde keine cfn Datei in der irgendwas steht so wie in dem Beispiel. Eine cfn Datei finde ich, da werden aber nur zwei Pfade nachgeladen in denen dann aber auch nichts zu finden ist.

Hab ich da einen Denkfehler bei der Suche?

Aus Verzweifelung habe ich schon nach cfn Dateien gesucht mit: grep -R .cfn /etc/mysql/*

Vielleicht mach ich was falsch, aber wenn schon die Doku von MariaDB selbst nicht stimmt mit ihren Pfaden und Einträgen.....
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Also ich hab's gerade mal auf einem Raspi Zero installiert und da findet sich die Datei in `/etc/mysql/my.cnf`.

Die Doku von MariaDB kann ja schlecht vorhersagen wo eine bestimmte Distribution die Konfigurationsdatei ablegt, also kann man da auch schlecht sagen die Doku von MariaDB wäre falsch.

Wenn man es systematisch ermitteln wollte unter einem aktuellen Raspbian, dann müsste man sich die Systemd-Unit für den mysql.service anschauen:

Code: Alles auswählen

$ systemctl cat mysql.service
# /run/systemd/generator.late/mysql.service
# Automatically generated by systemd-sysv-generator

[Unit]
SourcePath=/etc/init.d/mysql
Description=LSB: Start and stop the mysql database server daemon
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutd
After=remote-fs.target systemd-journald-dev-log.socket network-online.target nss
Wants=network-online.target
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SysVStartPriority=3
ExecStart=/etc/init.d/mysql start
ExecStop=/etc/init.d/mysql stop
ExecReload=/etc/init.d/mysql reload
Da würde man jetzt sehen, dass es eigentlich noch das System-V init.d-System für diesen Service ist und man im `/etc/init.d/mysql`-Skript nachschauen muss wie der Dienst tatsächlich gestartet wird. Und dort findet man dann `/etc/mysql/my.cnf`. Diese Startskripte sind nicht von den MariaDB-Entwicklern, sondern von der Linux-Distribution bzw. den Maintainern der MariaDB-Pakete.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten