php kann keine Verbindung zu mysql mit Fehler 13 herstellen (aber die Befehlszeile kann)

Lesezeit: 3 Minuten

php kann keine Verbindung zu mysql mit Fehler 13 herstellen
SimSimY

Ich habe eine seltsame Situation auf einem neu installierten Server und es scheint, dass Google mir dieses Mal nicht helfen kann. Ich kann von meinem PHP-Code aus keine Verbindung zu (remote) mysql herstellen. Wenn ich versuche, über die Befehlszeile auf demselben Server eine Verbindung herzustellen, schlägt die Verbindung fehl.

Verbindung nicht möglich: Verbindung zum MySQL-Server auf „MYSQL.SERVER“ nicht möglich (13)

Hier ist der Code und der Verbindungsversuch von der Befehlszeile aus

[u1@bosko httpdocs]$ cat  test.php

<?
$link = mysql_connect('MYSQL.SERVER', 'testusersimon', '123456');
if (!$link) {
    die('Could not connect: ' .  mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

[u1@bosko httpdocs]$ mysql -h MYSQL.SERVER -utestusersimon --password=123456
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 352108
Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> quit
Bye

Ich habe versucht, das PHP-Skript sowohl im mod_php-Modus als auch in FastCGI auszuführen, überprüfen Sie, ob “/etc/php.d/mysql.ini” in den Abschnitten phpinfo() sowie mysql, mysqli und pdo_mysql angezeigt wird.

aber das Ergebnis war das gleiche, ich weiß, es ist etwas Einfaches, aber ich kann es einfach nicht. Bitte helfen 🙂

Bearbeiten: Das Problem war mit SElinux

setsebool -P httpd_can_network_connect_db=1

War die Lösung.

  • Fedora11 der Remote-Server ist Win2k8

    – SimSimY

    2. November 10 um 14:05 Uhr

php kann keine Verbindung zu mysql mit Fehler 13 herstellen
Pallieter Koopmans

setsebool -P httpd_can_network_connect=1

wird auch ein hilfreicher CLI-Befehl für viele Leute sein, die diese Frage besuchen, um mysql_connet()-Verbindungen von innerhalb von HTTP (Apache)-Anfragen zu einem entfernten MySQL-Datenbankserver zuzulassen, stellen Sie sicher, dass Sie Netzwerkverbindungen von httpd in SElinux aktivieren, das sich normalerweise in /etc/ befindet. selinux/config (standardmäßig deaktiviert, um zu verhindern, dass Hacker andere Computer mit Ihrem httpd angreifen).

  • Wie ich in meinem vorherigen Kommentar sagte, war dies tatsächlich SELinux-bezogen.

    – SimSimY

    1. September 11 um 9:38 Uhr

  • Bei der versuchten Befehlszeile funktioniert es, aber wenn Apache es ausführt, ist der Fehler “Warnung: mysql_connect(): [2002] Berechtigung verweigert (Verbindungsversuch über tcp://wxyz:3306)”. Ja, es hängt mit SELinux zusammen. Wir haben wirklich so viele verschiedene Dinge ausprobiert. Vielen Dank @thesimon

    – Amil Waduwawara

    11. Dezember 12 um 6:44 Uhr


  • Ich habe Selinux so oft ausgeschaltet, dass ich Selinux-bezogene Berechtigungsfehler nicht erkenne, wenn ich einen sehe. Danke für den Hinweis.

    – pdwalker

    25. Oktober 15 um 5:05 Uhr

  • Lol, diese SElinux-Probleme. Halber Tag für Ordnerzugriff auf Apache. Jetzt halber Tag für DB-Anschluss.

    – Alex Kalmikow

    27. Juli 16 um 08:47 Uhr

  • Wie wäre es mit einem Fix für MacOS?

    – doncadavona

    6. Januar 17 um 4:09 Uhr

php kann keine Verbindung zu mysql mit Fehler 13 herstellen
Max Tschernopolski

Auf CentOs 6 können Sie Folgendes verwenden (ohne -P)

setsebool httpd_can_network_connect=1

1643912646 382 php kann keine Verbindung zu mysql mit Fehler 13 herstellen
Grant Rostig

Auf Fedora 21 mit Apache 2/httpd Version 2.6 mit PHP-Version 5.6 beim Herstellen einer Verbindung zu einem entfernten MySQL-Server 5.6 oder Mariadb-Version 10. Es scheint sogar ein Problem zu geben, eine Verbindung zu einem lokalen Server herzustellen, wenn der FQDN des Servers anstelle von localhost im PHP-Code angegeben wird .

Dieser Befehl behebt das Berechtigungsproblem für die aktuelle Sitzung:

setsebool httpd_can_network_connect_db on

Um den Fix für nachfolgende Neustarts dauerhaft zu machen, müssen Sie Folgendes tun:

setsebool -P httpd_can_network_connect_db on

Vielen Dank an alle in dieser Frage, die mich aus der “Erlaubnis verweigert”-Hölle gerettet haben. 🙂

.

758610cookie-checkphp kann keine Verbindung zu mysql mit Fehler 13 herstellen (aber die Befehlszeile kann)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy