Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi ma connexion MySQL distante échoue-t-elle avec une « méthode d'authentification inconnue » ?

Susan Sarandon
Libérer: 2024-11-10 09:25:02
original
223 Les gens l'ont consulté

Why Does My Remote MySQL Connection Fail with

La connexion MySQL à distance échoue avec une « méthode d'authentification inconnue »

Lors de la tentative d'établissement d'une connexion à distance à un serveur MySQL, le redoutable « inconnu Une erreur "méthode d'authentification" peut être rencontrée. Ce problème survient lorsque le mécanisme d'authentification du serveur est incompatible avec celui du client.

Dans ce cas particulier, l'erreur s'est produite lors de la connexion depuis une machine locale (MySQL version 5.5.27) à un serveur distant (MySQL version 5.5 .23). La cause sous-jacente était l'incompatibilité entre les méthodes de hachage de mot de passe utilisées par les deux serveurs.

Résolution de l'incompatibilité

La solution à ce problème consiste à mettre à jour le hachage de mot de passe sur le serveur pour correspondre à la méthode utilisée par le client. Dans ce cas, cela implique la mise à jour vers le nouveau format de mot de passe de 41 octets utilisé par MySQL 4.1 et versions ultérieures.

Mise à jour du hachage du mot de passe

  • Connectez-vous au serveur MySQL distant à l'aide d'un outil de ligne de commande tel que MySQL Workbench.
  • Exécutez ce qui suit commande :
ALTER USER 'yourusername'@'%' IDENTIFIED BY 'new_password';
Copier après la connexion

où 'yourusername' est votre nom d'utilisateur MySQL et 'new_password' est votre nouveau mot de passe.

  • Videz les privilèges pour appliquer les modifications :
FLUSH PRIVILEGES;
Copier après la connexion

Redémarrez le serveur MySQL pour vous assurer que les modifications prennent en compte effet.

Modification du code client

Une fois le mot de passe mis à jour, modifiez votre code de connexion comme suit :

$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name;charset=utf8';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    PDO::MYSQL_ATTR_DIRECT_QUERY => true
);

try {
    $online_dbh = new PDO($dsn, 'myusername', 'new_password', $options);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Congratulations!";
} catch (PDOException $e) {
    echo $e->getMessage();
}
Copier après la connexion

Paramétrage du PDO : MYSQL_ATTR_DIRECT_QUERY sur true force PDO à utiliser la méthode de connexion la plus sécurisée, résolvant ainsi le problème d'authentification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal