Datenbank von Console erreichbar, aber nicht vom Web

ClocxHD

Lt. Junior Grade
Registriert
Aug. 2014
Beiträge
376
Hallo,

ich besitze mehrere vServer, auf denen CentOS 6 installiert ist.
Auf einen davon ist ein MariaDB-Server installiert, der an die öffentliche IP gebunden ist.
Ich kann ihn mit dem PHP-Script von allen Servern erreichen.

Heute habe ich mir einen neuen vServer bei einem anderen Anbieter geholt, und CentOS 7 installiert.
Httpd, php & php-mysql installiert, Script rüber kopiert, und wenn ich das Script im Browser aufrufe, kommt
folgende Meldung:
Failed to connect to MySQL: Can't connect to MySQL server on 'xxx' (13)

Wenn ich das Script auf dem gleichen Server mit php scriptname.php aufrufe, funktioniert es ganz normal.

Woran kann das liegen?

Das Script:

PHP:
<?php
require("config.php");

//DB Connect
$con = mysqli_connect(HOST, USERNAME, PASSWORT, DB);
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sel = "SELECT * FROM `Kontakt`";
$query = mysqli_query($con, $sel);

if (mysqli_num_rows($query) > 0) {
    while ($contact = mysqli_fetch_assoc($query)) {
        echo $contact["Name"] . $contact["EMail"] . $contact["Text"] . $contact["Zeit"];
    }
}
?>

LG,
ClocxHD
 
Prüf mal die Rechte und auch den Server-Eintrag beim User. Der sollte u.a. mit der IP/dem Hostnamen übereinstimmen im Script.
 
Stimmt alles überein, Rechte liegen beim Benutzer, unter dem der Webserver ausgeführt wird
 
Schau mal, ob es an Selinux liegt:
setenforce 0
Falls es dann klappt, dann musst du vermutlich nen Schalter in den Selinux-Policies für PHP umlegen, damit der Interpret übers Netzwerk kommunizieren darf. Vielleicht musst du das auch für den Webserver machen, das weiß ich nicht.
Deaktivier auf keinen Fall global und permanent Selinux. Das kann dir den Arsch bei nem kompromittierten Dienst retten.

Es geht über CLI, da du in einem anderen Selinux-Kontext bist, der dir eben die Verbindung erlaubt.
Der Webserver wird in einem anderen Kontext ausgeführt, der eben keine neuen Verbindungen übers Netzwerk erlaubt.
 
Jetzt funktioniert es.
Wie mache ich das für den Webserver bzw. PHP?
 
Zurück
Oben