MariaDB,PHP: Kann nicht von anderem Rechner auf Datenbank zugreifen?
Hi, hab bei mir auf einem RBP ne MariaDB MYSQL Datenbank angelegt, (incl. phpmyadmin).
Habe in diesem Bereich noch kaum Erfahrung und ich habe das Problem dass ich von dem Webserver (steht im selben LAN) nicht auf die DB mit PHP verbinden kann.
Also wenn ich verbinden möchte von dem Webserver kommt Folgende Fehlermeldung:
SQLSTATE[HY000] [2002] Connection refused
Wenn ich das direkt auf dem DB-Server mit localhost versuche geht es.
Falls es noch hilfreich ist hier das Script mit dem ich verbinde:
<?php
$con=mysqli_connect("x.x.x.111","username","password","dbname");
if (mysqli_connect_errno())
{
echo "Failed to connect to MariaDB: " . mysqli_connect_error();
} else {
echo "JO ES GEHT";
}
?>
Und nochmal der Problem konkret: wenn ich das Script auf einem anderen Server im selben Neztwerk ausführe komme ich nicht drauf, mit localhost geht es.
3 Antworten
Das funktioniert nicht ohne Grund nicht, ein offener MySQL/MariaDB Port ist ein Sicherheitsrisiko. Da es sich hier aber vermutlich um ein gesichertes lokales Netzwerk handelt, sollte das kein großes Problem sein.
Es gibt grundsätzlich zwei Dinge, die dich daran hindern, von entfernten Geräten auf den Server zuzugreifen.
Zunächst einmal bindet MySQL nur an das loopback interface (IP 127.0.0.1 bzw. localhost), was Verbindungen von außen komplett verhindert. Diese kannst du in der Konfiguration auf 0.0.0.0 setzen, um an alle verfügbaren IPs zu binden. Die Konfiguration sollte sich in "/etc/mysql/mariadb.conf.d" befinden, womöglich musst du die relevante Einstellung "bind-address" erst auskommentieren.
Zusätzlich kann in MySQL eingestellt werden, welcher Host auf einen Benutzer zugreifen kann, bei root ist das standardmäßig localhost. Am besten legst du einen unprivilegierten Benutzer dafür an und setzt in MySQL host auf die lokale IP des Webservers. Alternativ kann man auch mit % alle Hosts erlauben, was aber nicht zu empfehlen ist.
Danke, genau das hab ich gemacht, leider war deine Antwort ein bissel zu spät..
Danke trotsdem :D
Ja natürlich geht das, sogar quer durch das Internet (ob letzteres klug ist, sei mal dahingestellt).
- Schauen daß kein Filter die Verbindung stört oder beeinträchtigt
- RDBMS an geeignete IP binden
- RDBMS für Remotezugriff konfigurieren
- Entsprechedem Benutzer Remotezugriff gestatten
Ind wieweit 3+4 zusammenfallen oder getrennt zu berücksichtigen sidn hängt vom genauen Zugriffsmodell des DBMS ab, die Anleitung verrät mehr.
Das erste wäre einmal in der Hauptkonfiguration des DBMS die Sektion mysqd zu finden.
Dort findet sich hoffentlich ein bind-address - hier muß entweder ein * für alle IPs oder die gewünschten IPs eingetragen werden. (Auskommentieren sollte genauso wirken wie ein *, also an alle Interfaces binden)
Sofern Du ein skip-networking findest, dies muß auskommentiert sein.
Danach den Server neu starten und mit netstat schauen, ob mysqld auch auf Verbindungen hört.
Der nächste Schritt scheint bei mariadb zu sein, daß der user user@host existieren muß, wobei host eben der name (oder die ip?) des Rechners sein muß, von dem die Verbindung eingeht.
Die verlinkte Seite aus der Doku zeigt eigentlich den wichtigen Teil, den man auch verstehen kann, wenn man kein Englisch spricht.
Andernfalls such doch mal nach einem deutschen tutorial für Remotezugriff bei Maria-DB.
Hui Danke :D hab im internet noch mal nach "remotezugriff für MariaDB" gesucht. Für nachfolger die das selbe Problem haben: https://websiteforstudents.com/configure-remote-access-mysql-mariadb-databases/
Vielen Dank für die detailreiche Anleitung auch wenn ich nichts verstanden habe xP
Lg Danke trotsdem!
port freigeben oder remote zugriff konfigurieren
https://mariadb.com/kb/en/library/configuring-mariadb-for-remote-client-access/
Hey, wie ich oben geschrieben habe bin ich komplett unerfahren. Englische Anleitungen sind auch nicht das beste...
Könntest du mir villeicht helfen?
der db user ist "ts3ranksystem" und die DB läuft auf 192.168.2.111
Der Webserver läuft auf 192.168.2.110
Wie muss ich die Datenbank und den Benutzer konfiguieren damit webserver x.110 zugriff hat?