Erreur de connexion à la base de données : type d'erreur 2002 – Autorisation refusée
P粉757640504
2023-08-24 19:54:00
<p>J'essaie de me connecter à la base de données à l'aide du script suivant (cxn-test.php)</p>
<pre class="brush:php;toolbar:false;"><?php
$hôte = '155.30.136.20';//IP virtuelle
$utilisateur = 'abc_user' ;
$pass = 'xxxxxxxxx';
$dbname = 'bienvenue';
$link = mysqli_connect($host, $user, $pass,$dbname);
si ($lien) {
echo "Erreur : Impossible de se connecter à MySQL .PHP_EOL ;
echo "Numéro d'erreur de débogage :" mysqli_connect_errno() .
echo "Message d'erreur de débogage :" mysqli_connect_error() .
sortie;
}autre {
echo "succès" .PHP_EOL;
}</pré>
<p>Quand je l'essaye sur le terminal</p>
<blockquote>
<p>php cxn-test.php //Succès</p>
</blockquote>
<p>Mais lorsque je l'essaye sur localhost, j'obtiens l'erreur suivante : </p>
<blockquote>
<p>curl -s http://localhost/cxn-test.php</p>
</blockquote>
<p><code>Erreur : Impossible de se connecter à MySQL.
Numéro d'erreur de débogage : 2002
Message d'erreur de débogage : Autorisation refusée</code></p>
<p>C'est un problème étrange, cela ne fonctionne pas sur localhost mais fonctionne bien sur la ligne de commande. </p>
J'ai rencontré le même problème après avoir obtenu une nouvelle boîte CentOS 7 exécutant SELinux. Je peux me connecter au serveur de base de données MySQL distant via la ligne de commande, mais Drupal (et le script PHP de test) ne peut pas se connecter.
Le problème a finalement été causé par la politique de sécurité de SELinux.
Par défaut, la politique httpd_can_network_connect_db est désactivée (ce qui signifie que votre serveur Web ne peut pas contacter la base de données distante).
Vérifiez avec la commande suivante :
getsebool -a | grep httpd
Si httpd_can_network_connect_db est désactivé, veuillez l'activer avec la commande suivante :
(L'indicateur -P rend les modifications permanentes, de sorte que les paramètres restent en vigueur lors des redémarrages.)