Erreur de connexion à distance MySQL : "Méthode d'authentification inconnue"
Lors de la tentative d'établissement d'une connexion à distance à un serveur MySQL à partir d'une machine locale, vous pouvez rencontrer l'erreur suivante :
Warning: PDO::__construct(): The server requested authentication method unknown to the client [mysql_old_password] in ... SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
Comprendre le problème :
Cette erreur indique généralement une incompatibilité entre les méthodes de hachage de mot de passe utilisées par MySQL local et distant. serveurs. Les versions MySQL antérieures à 4.1 utilisaient une méthode de hachage de mot de passe sur 16 octets, tandis que les versions 4.1 et supérieures adoptaient une méthode de hachage plus sécurisée sur 41 octets. Si le serveur MySQL local utilise l'ancienne méthode de hachage mais que le serveur distant utilise la nouvelle, la tentative de connexion échouera avec l'erreur « Méthode d'authentification inconnue ».
Résolution du problème :
Pour résoudre ce problème, vous devrez mettre à jour le mot de passe sur le serveur MySQL distant pour utiliser le nouveau format de hachage de 41 octets. Voici comment procéder :
Connectez-vous au serveur MySQL distant :
mysql -u [username] -p[password]
Mettre à jour le mot de passe :
ALTER USER [username] IDENTIFIED BY '[new_password]';
Accorder des autorisations :
Assurez-vous que l'utilisateur dispose des autorisations nécessaires pour accéder à la base de données :
GRANT ALL PRIVILEGES ON [database_name].* TO [username]@'local_ip_address';
Reconnectez-vous :
Essayez de vous connecter au serveur MySQL distant avec le mot de passe mis à jour :
$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name'; $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', ); try { $online_dbh = new PDO($dsn, 'myusername', 'new_password', $options); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Success!"; } catch (PDOException $e) { echo $e->getMessage(); }
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!