Connexion utilisant l'ancien protocole d'authentification (pré-4.1.1) refusé (option client 'secure_auth' activée)
J'ai un problème lorsque vous essayez de vous connecter à MySQL à l'aide de Windows ODBC driver. Il y a beaucoup de résultats de recherche concernant l'évidence... les gens sont d'utiliser les anciennes versions, cependant, je ne suis pas.
mysqld est sur CentOS 6.4 32bit
./usr/libexec/mysqld Ver 5.1.69 for redhat-linux-gnu on i386 (Source distribution)
Donc, je suis à une perte de comprendre où tout pré 4.1.1 protocole. Des idées?
source d'informationauteur tlum
Vous devez vous connecter pour publier un commentaire.
Je suppose que si vous posez la bonne question, il est plus facile de trouver la réponse.
Dans ce cas, "mon" problème est lié à la façon dont les mots de passe sont cryptées et stockées dans la base de données. L'héritage des mots de passe étaient stockés avec une courte hachage qui est maintenant obsolète.
Quelques points importants:
mysql_upgrade ne peut pas et ne mettez pas les mots de passe, ni d'avertir à ce sujet dans certaines versions, voir: http://bugs.mysql.com/bug.php?id=65461.
Même, vous avez surtout la dernière version du serveur et des clients, il suffit d'un client hérité quelque part pour créer un héritage mot de passe, puis vous allez avoir du mal avec ce compte, n'importe quel client tente de l'utiliser.
Versions différentes ont traité de la situation différemment de sorte que vous pouvez être assis sur certains anciens mots de passe dans votre base de données et puis tout à coup, sans raison apparente, certains comptes d'arrêt de travail... c'est parce que de la façon dont les différentes versions ont choisi de gérer la situation.
Vous ne pouvez pas mettre à niveau les mots de passe. Vous devez savoir ce qu'ils sont et vous devez les changer.
EDIT: Pour être plus clair, vous devez modifier le mot de passe est stocké avec la plus courte de hachage à l'aide d'un nouveau client qui utilise le plus les tables de hachage. Ce faisant, vous allez écrire que les comptes de mot de passe avec le plus de hachage, à laquelle rien ne doit ralentir les tentatives d'accès au compte. Si le problème est récurrent, vous devriez être à la recherche pour les anciens clients à votre site qui sont encore écrire des mots de passe avec le obsolète de hachage de la longueur.
MySQL Workbench 6.08 dans la gestion des Connexions de Serveur, Connexion, onglet Avancé, sous-onglet, vous devez cocher la case " Utiliser l'ancien protocole d'authentification.'
Essayez d'installer l'ancienne version du pilote 3.51.30: http://dev.mysql.com/downloads/connector/odbc/5.1.html#downloads
Il fonctionne sur mon Mysql Ver 5.0.24 a-communauté
J'ai couru ce tout en utilisant le Connecteur ODBC de Windows pour vous connecter à un Percona server 5.5. qui a
secure_auth
désactivé.De ce que j'ai trouvé le connecteur ODBC, contrairement à MySql Workbench, ne prend pas en charge une option pour authentifier les connexions qui utilisent le vieux de 16 octets mots de passe hachés. Il y a un rapport de bug à ce sujet, mais il semble que le cessionnaire est/était confus au sujet de la demande de fonctionnalité (Voir bug #71234).
J'ai été en mesure de mettre à jour la connexion à mysql d'utiliser le nouveau 41 octets de hachage à l'aide de ces commandes:
Comme je l'ai mentionné notre serveur a
secure_auth
désactivé, ce qui semble causerpassword()
de retourold_password()
résultats. L'exécution deset old_passwords=0;
permettra à l'password()
méthode pour générer le nouveau 41 octets hachages (pour la durée de votre session).J'ai eu un message d'erreur similaire quand à distance essaie d'accéder à ma base de données MySQL. À l'aide de Directadmin j'ai facilement changé le mot de passe de base de données MySql comme suggéré ci-dessus. Cette généré automatiquement le mot de passe à l'aide de la nouvelle méthode de hachage. Cela a résolu le problème de connexion à distance instantanément.
J'ai trouvé une autre solution au cas où quelqu'un frappe cette - très bizarre -
Quand j'ai eu "Permettent d'inprocess" vérifié j'ai toujours l'erreur, même si le système ODBC DSN a bien fonctionné. Je suppose parce que j'avais un mélange de 5,2 (avec des serveurs qui a bien fonctionné) et 5.1 pour les serveurs qui n'ont pas, SQL partage le processus parce que le 5.1 pilote ne donne pas cette erreur.
Si vous ne pouvez pas changer votre serveur, vous pouvez peut-être changer votre client: http://bugs.mysql.com/bug.php?id=75425