J'ai juste essuyé mon Mac et fait une nouvelle installation d'El Capitan. J'ai du mal à me connecter à Mysql maintenant. Après avoir suivi un processus de configuration de serveur Web, j'ai créé un simple fichier de test PHP:
<?php
$conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error;
else echo "Connected successfully";
phpinfo();
?>
Lorsque je l'exécute, j'obtiens cette erreur:
Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.
Je n'ai jamais vu cette réponse d'une connexion auparavant. Comment résoudre ce problème si je ne parviens pas à me connecter?
ÉDITER
Dans le terminal, j'ai entré la commande:
mysql -u root -p
Cela m'a demandé mon mot de passe (actuel) que j'ai mis. J'ai maintenant accès aux commandes mysql mais tout ce que j'essaye entraîne cette erreur:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Comment réinitialiser le mot de passe en utilisant ALTER USER
?
php
mysql
macos
osx-elcapitan
CaribouCode
la source
la source
/usr/local/mysql/bin/mysqladmin -u root -p password
Réponses:
J'ai donc finalement trouvé la solution moi-même.
Tout d'abord, je suis entré dans le terminal et j'ai tapé:
mysql -u root -p
Cela a demandé mon mot de passe actuel que j'ai tapé et m'a donné accès pour fournir plus de commandes mysql. Tout ce que j'ai essayé à partir d'ici a donné cette erreur:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Ceci est déroutant car je ne pouvais pas réellement voir un moyen de réinitialiser le mot de passe à l'aide de l'
ALTER USER
instruction, mais j'ai trouvé une autre solution simple:SET PASSWORD = PASSWORD('xxxxxxxx');
la source
Tout d'abord, j'utilise:
Donner mon mot de passe actuel pour le «root». Suivant:
mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
Changez
'new_password'
pour un nouveau mot de passe pour l'utilisateur «root».Cela a résolu mon problème.
la source
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
mysqladmin -u [username] -p password
a travaillé pour moi sur OS X El Capitan et MySQL 5.7.12 Community Server. Exemple:$ /usr/local/mysql/bin/mysqladmin -u root -p password Enter password: New password: Confirm new password: Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
Ceci est similaire à la réponse de pavan sachi, mais avec des invites de mot de passe.
Mon erreur était "# 1862 - Votre mot de passe a expiré. Pour vous connecter, vous devez le modifier à l'aide d'un client prenant en charge les mots de passe expirés." à l'écran de connexion phpMyAdmin pour la première fois.
la source
mysqladmin -u [username] -p password
Expiration du mot de passe MySQL
La réinitialisation du mot de passe ne résoudra le problème que temporairement. De MySQL 5.7.4 à 5.7.10 (pour encourager une meilleure sécurité - voir MySQL: Politique d'expiration des mots de passe ), la valeur de la
default_password_lifetime
variable par défaut est 360 (1 an). Pour ces versions, si vous n'apportez aucune modification à cette variable (ou à des comptes d'utilisateurs individuels), tous les mots de passe expirent au bout de 360 jours.Ainsi, à partir d'un script, vous pourriez obtenir le message: "Votre mot de passe a expiré. Pour vous connecter, vous devez le modifier à l'aide d'un client qui prend en charge les mots de passe expirés."
Pour arrêter l'expiration automatique du mot de passe, connectez-vous en tant que root (
mysql -u root -p
), puis, pour les clients qui se connectent automatiquement au serveur (par exemple, des scripts), modifiez les paramètres d'expiration du mot de passe:ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;
OU vous pouvez désactiver l'expiration automatique du mot de passe pour tous les utilisateurs :
SET GLOBAL default_password_lifetime = 0;
Comme l'a souligné Mertaydin dans les commentaires, pour rendre cela permanent, ajoutez la ligne suivante à un
my.cnf
fichier que MySQL lit au démarrage, sous le[mysqld]
groupe de paramètres. L'emplacement demy.cnf
dépend de votre configuration (par exemple Windows, ou Homebrew sur OS X, ou un programme d'installation), et si vous voulez que ce soit par utilisateur sous Unix ou global:[mysqld]
default_password_lifetime = 0
(Il peut y avoir d'autres paramètres ici aussi ...)Consultez la documentation MySQL sur les fichiers de configuration .
la source
J'ai récemment rencontré le même problème lors de l'installation de mysql sur mac os x capitan. Je n'ai pas trouvé la bonne réponse ici, donc en ajoutant cette réponse.
MySql dans les versions actuelles, génère un mot de passe temporaire lorsque vous installez mysql. Utilisez ce mot de passe pour définir un nouveau mot de passe à l'aide de l'utilitaire mysqladmin comme ci-dessous;
J'espère que cela vous aidera, vous et les autres.
la source
Téléchargez simplement MySQL workbench pour vous connecter. Cela vous demandera de changer le mot de passe immédiatement et automatiquement.
la source
démarrer MYSQL en mode sans échec
mysqld_safe --skip-grant-tables &
Connectez-vous au serveur MYSQL
exécutez des commandes SQL pour réinitialiser le mot de passe:
use mysql; SET GLOBAL default_password_lifetime = 0; SET PASSWORD = PASSWORD('new_password');
Dernière étape, redémarrez votre service mysql
la source
J'ai rencontré ce problème il y a quelques jours. Pour la meilleure solution pour la version 5.7 de MySQL; connectez-vous à votre console mysql et modifiez votre mot de passe avec la commande suivante:
ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password', `root`@`localhost` PASSWORD EXPIRE NEVER;
la source
ATTENTION: cela permettra à tout utilisateur de se connecter
J'ai dû essayer autre chose. Étant donné que mon mot de passe root a expiré et que la modification n'était pas une option car
Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted
ajoutant temporarly
skip-grant-tables
sous[mysqld]
dansmy.cnf
et le redémarrage de MySQL a fait l'affairela source
Sur Windows dans phpmyadmin, regardez dans Variables: default_password_lifetime, et réglez-le sur 0 (au lieu de 360), profitez-en.
Il est possible que mySQL prenne encore 360 jours, alors ajoutez dans my.ini:
[mysqld] default_password_lifetime=0
Et redémarrez mysql.
la source
Cela a fonctionné pour moi:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword','root'@'localhost' PASSWORD EXPIRE NEVER;
la source
redémarrez le serveur MySQL avec l'option --skip-grant-tables, puis définissez un nouveau mot de passe root
$ mysql -u root mysql> USE mysql; mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> quit
Maintenant, si vous avez besoin, vous pouvez mettre à jour la table mysql.user (champ password_expired = 'N') pour ne pas expirer le mot de passe.
la source
mysql -u root
j'obtiens cette erreur:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
mysql -u root -p
puis il m'a demandé le mot de passe que j'aiYou must reset your password using ALTER USER statement before executing this statement.
Toutes ces réponses utilisent des consoles Linux pour accéder à MySQL.
Si vous êtes sous Windows et que vous utilisez WAMP, vous pouvez commencer par ouvrir la console MySQL (
click WAMP icon->MySQL->MySQL console
).Ensuite, il vous demandera d'entrer votre mot de passe actuel, entrez-le.
Et puis tapez
SET PASSWORD = PASSWORD('some_pass');
la source
meilleure solution facile:
[PATH MYSQL]/bin/mysql -u root [Enter password] SET GLOBAL default_password_lifetime = 0;
puis fonctionne très bien.
la source
Ce travail pour moi:
Source: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/
Connectez-vous en tant que root:
puis vous désactivez l'expiration automatique des mots de passe de tous les utilisateurs:
SET GLOBAL default_password_lifetime = 0;
la source
L'expiration du mot de passe est une nouvelle fonctionnalité de MySQL 5.6 ou 5.7.
La réponse est claire: utilisez un client capable de changer de mot de passe expiré (je pense que Sequel Pro peut le faire).
La bibliothèque MySQLi ne peut évidemment pas changer le mot de passe expiré.
Si vous avez un accès limité à localhost et que vous n'avez qu'un client console, le client mysql standard peut le faire.
la source
Ouvrez la console MySQL et tapez SET PASSWORD = 'votre mot de passe'; puis appuyez sur la touche ENTRÉE qui définira votre mot de passe défini pour l'utilisateur root.
Vous ne pouvez écrire que SET PASSWORD = ''; qui définira le mot de passe comme vide pour l'utilisateur root.
la source
J'ai fait quelque chose comme ça.
UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
la source
You must reset your password using ALTER USER statement before executing this statement.
Ouvrez simplement MySQL Workbench et choisissez [Instance] Démarrage / Arrêt et cliquez sur Démarrer le serveur. Ça a marché pour moi
la source