57 votes

php ne peut pas se connecter à mysql avec l'erreur 13 (mais la ligne de commande peut)

J'ai bizarre situation serveur fraîchement installé, et il semble que Google ne peut pas m'aider cette fois. Je ne peux pas se connecter (à distance) de mysql à partir de mon code php. Lorsque j'essaie de me connecter en ligne de commande sur le même serveur, la connexion succseds.

Impossible de se connecter: ne Peut pas se connecter à MySQL server on 'MYSQL.Le SERVEUR' (13)

Voici le code et la tentative de connexion à partir de la ligne de commande

[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

J'ai essayé de lancer le script php à la fois dans mod_php et en mode FastCGI, vérifiez que "/etc/php.d/mysql.ini" s'affiche dans le phpinfo() ainsi que mysql,mysqli et pdo_mysql sections.

mais le résultat était le même, je sais que c'est quelque chose de simple, mais je ne peux pas . S'il vous plaît aider :)

Edit: Le problème était avec SElinux

setsebool -P httpd_can_network_connect_db=1

A été la solution.

125voto

Pallieter Koopmans Points 476
 setsebool -P httpd_can_network_connect=1
 

sera également une commande CLI utile pour de nombreuses personnes visitant cette question, afin d'autoriser les connexions mysql_connet () depuis les requêtes HTTP (Apache) vers un serveur de base de données MySQL distant, assurez-vous d'activer les connexions réseau à partir de httpd dans SElinux, généralement situées dans / etc / selinux / config (désactivé par défaut pour empêcher les pirates d’attaquer d’autres machines utilisant votre httpd).

29voto

Sur CentOs 6, vous pouvez utiliser ce qui suit (sans -P )

 setsebool httpd_can_network_connect=1
 

0voto

Brad Points 61171

Au hasard, mais le client MySQL en PHP peut-il écrire dans le fichier sock? Un autre gars nommé Simon avait le même problème avec cette solution .

0voto

user489041 Points 6362

Cela pourrait être une réponse trop simple pour vous. Vous avez mentionné qu'il s'agissait d'un nouveau serveur. Avez-vous ouvert les ports dont MYSQL a besoin sur votre routeur, si vous en utilisez un? De plus, avez-vous autorisé les connexions à distance dans MYSQL?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X