web-dev-qa-db-fra.com

Impossible d'accéder à MySQL après avoir généré automatiquement un mot de passe temporaire

J'ai effacé et installé OSX 10.11 El Capitan et j'ai suivi ce tutoriel pour que MySQL soit opérationnel sur le nouvel OS X. La première étape a été de télécharger MySQL Pour Mac OS X 10.9 (x86, 64 bits) ), Archive DMG (fonctionne sur 10.11, ils ont recommandé dans le tutoriel). Alors que je finissais d'installer MySQL, j'ai reçu le message suivant:

2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for root@localhost: R>gFySuiu23U

If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.

C'était bizarre, je n'ai jamais vu ce genre de message. Après cela, j’ai démarré MySQL via le volet des préférences, puis j’ai utilisé la commande /usr/local/mysql/bin/mysql -v sur le terminal pour une étape ultérieure. J'ai reçu un message d'erreur disant que:

ERROR 1045 (28000): Access denied for user 'cheetah'@'localhost' (using password: NO)

J'ai également essayé d'accéder à la base de données via Sequel Pro en utilisant root comme nom d'utilisateur et mot de passe vide. J'ai reçu un message d'accès refusé indiquant que:

Unable to connect to Host 127.0.0.1 because access was denied.

Double-check your username and password and ensure that access from your current location is permitted.

MySQL said: Access denied for user 'root'@'localhost' (using password: NO)

D'accord, j'ai aussi essayé à nouveau d'utiliser root comme nom d'utilisateur mais 'R> gFySuiu23U' comme mot de passe (généré à partir de MySQL). J'ai eu un message d'échec de connexion disant que:

Unable to connect to Host 127.0.0.1, or the request timed out.

Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).

MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.

Comment pourrais-je résoudre ce problème? Je me souviens que MySQL n'a jamais généré automatiquement un mot de passe temporaire comme celui-ci, n'est-ce pas?

62
Cheetah Felidae

Essaye ça:

mysql -u root -h 127.0.0.1 -p
Enter password: (enter the random password here)

Réf: https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html

Ensuite, vous pouvez réinitialiser votre mot de passe en utilisant ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';

99
Kumar Nitin

C’est ce qui a fonctionné pour moi sur OS X Yosemite, qui exécute MySql v5.7 (installé à partir du fichier .dmg).

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

(Entrez le mot de passe temporaire généré par le programme d'installation.)

Cela vous permet d'accéder au mode bac à sable et mysql> Invite. Puis définissez le mot de passe root souhaité avec SET PASSWORD :

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mySuperSecretPassword');
38
Lesley

Maintenant que le mot de passe généré par MySQL est expiré, le problème est réduit à ce que ce mot de passe fonctionne à nouveau (1) ou en génère un nouveau (2). Cela peut être accompli en exécutant MySQL avec l'option skip-grant-tables, ce qui lui ferait ignorer les droits d'accès:

  1. Arrêtez votre serveur MySQL.

  2. Ajoutez ce qui suit à la fin de la section [mysqld] du fichier my.cnf et enregistrez-le.

    skip-grant-tables

  3. Démarrez le serveur MySQL.

  4. Dans le terminal, tapez

    mysql -u root -p

entrer dans la commande MySQL Invite.

  1. Dans l'invite de commande, tapez

    USE mysql;

pour entrer dans la base de données mysql où il conserve les utilisateurs de la base de données.

  1. Type 

    UPDATE user SET password_expired = 'N' WHERE User = 'root';

faire savoir à MySQL que le mot de passe n'a pas expiré (1) ou 

UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';

affecter un nouveau mot de passe YourNewPassword à root (2).

34
Anton Nikiforov

Effectuer ces étapes sous OSX 10.11 El Capitan et MySQL 5.7.X devrait suffire.

Considérant que vous avez déjà installé MySQL alors ..

Ouvrez une fenêtre de terminal et tapez:

  1. Sudo /usr/local/mysql/support-files/mysql.server stop
  2. Sudo mysqld_safe --skip-grant-tables

Étant donné que la commande déclenchée à l'étape 2 sera en cours d'exécution, vous devez ouvrir une autre fenêtre de terminal, puis taper:

  1. mysql -u root -p
  2. UPDATE mysql.user SET password_expired = 'N', authentication_string = PASSWORD ('') WHERE User = 'root';
  3. quitter;
  4. Sudo /usr/local/mysql/support-files/mysql.server restart

Important : à l'étape 2, vous devez remplacer votre mot de passe.

J'espère que ça va se passer pour vous.

15
Marcelo

Mot de passe MySQL expiré

Réinitialiser le mot de passe résoudra le problème temporairement, cependant, de MySQL 5.7.4 à 5.7.10 (pour encourager une meilleure sécurité), la valeur par défaut de la variable default_password_lifetime est 360 (environ un an). Pour ces versions, si vous apportez no à cette variable (ou à des comptes utilisateur individuels), tous les mots de passe utilisateur expirent après 360 jours.

En règle générale, vous pouvez obtenir le message suivant: "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."

Par conséquent, pour empêcher l'expiration automatique du mot de passe, connectez-vous en tant que root (mysql -u root -p), puis, pour clients qui se connectent automatiquement au serveur (par exemple, des scripts.), Modifiez les paramètres d'expiration du mot de passe pour ces clients:

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;

Liens:

MySQL: Expiration du mot de passe et mode bac à sable
MySQL: Règles d’expiration du mot de passe
Politique d’expiration du mot de passe dans MySQL Server 5.7

5
Dave Everitt

J'utilise macOS Sierra (10.12.3) et j'ai installé mysql-5.7.17-macos10.12-x86_64.dmg.

La réponse de @lesley a fonctionné pour moi à l'exception de la nécessité d'ajouter ./ pour m'assurer que j'appelais le fichier binaire mysql dans mon répertoire de travail actuel. Quel est l'endroit où le paquet susmentionné a été installé. 

Si vous cd à /usr/local/mysql/bin et exécutez mysql -u root -p --connect-expired-password, vous pourriez recevoir l'erreur suivante. 

mysql: unknown option '--connect-expired-password'

J'ai fait. Parce que vous exécutez simplement mysql sans fournir de chemin, appelé version précédemment installée du client MariaDB.

Donc, pour vous assurer d’exécuter le bon binaire, vous pouvez soit

fournir le chemin absolu 

/usr/local/mysql/bin/mysql -u root -p --connect-expired-password

ou le chemin relatif après avoir changé de répertoire

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

Les deux manières devraient fonctionner. Une fois que vous êtes connecté au client, les instructions sont les mêmes que ci-dessus de @lesley.

Entrez votre mot de passe temporaire généré par l'installateur et définissez votre nouveau mot de passe. 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourNewPassword'); 
4
najemnyvrah

J'ai rencontré le même problème. J'ai suivi le guide de processus d'installation à partir de https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html et j'ai téléchargé l'archive DMG et installé MySQL sur mon MAC OS X 10.12.2.

Enfin exécuté les commandes suivantes sur le nouveau terminal.

cd /usr/local/mysql/bin

./mysql -u root -p --connect-expired-password

Ça a marché.

2
hygull

La réponse 7 a fonctionné pour moi: El capitan, MySQL installé à partir de dmg et mot de passe généré automatiquement, mais en prenant soin de cd à /usr/local/bin/mysql avant d'entrer ./mysql -root -p Évident, mais je ne l'ai pas fait la première fois.

Maintenant, pour trouver où sont toutes mes bases de données et mes tables et comment les relier.

1
james meek

Pour Mysql 5.7 j'utilise 

Shell $> Sudo grep 'mot de passe temporaire' /var/log/mysqld.log

1
ji-ruh

Ce particulier a fait le tour pour moi:

Comme spécifié dans ce lien: https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password

Effectuez toutes les étapes sauf l'exécution

    UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';

Exécuter 

    UPDATE mysql.user
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';

Et ensuite exécuter FLUSH PRIVILEGES;

1
Sudarsana Gudipati

Une autre façon de résoudre ce problème consiste à utiliser une version plus ancienne de MySQL.

J'ai désinstallé MySQL version 5.7.9 pour Mac OS X 10.9 (x86, 64 bits), archive DMG puis installer l'ancienne version, MySQL version 5.6.7 pour Mac OS X 10.9 (x86, 64 bits), archive DMG. Ce problème est résolu. Le mot de passe généré automatiquement avant la fin de l'installation de cette ancienne version a disparu et je peux enfin accéder à la base de données en utilisant root comme nom d'utilisateur et un mot de passe vide. Tout fonctionne comme un charme!

0
Cheetah Felidae

J'ai contourné ce problème en exécutant 'mysql -u root -p --connect-expired-password' Entrez ensuite le mot de passe auto-gen expiré depuis mysql. Enfin obtenu. Base de données mysql sélectionnée avec 'use mysql' et ensuite mis à jour l'utilisateur 'root' pw avec 'ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'

0
Shelby Bedzyk

J'ai installé view brasser et j'avais le même message d'erreur jusqu'à ce que je remarque cette mise en garde:

Nous avons installé votre base de données MySQL sans mot de passe root. Pour le sécuriser, exécutez: mysql_secure_installation

Pour vous connecter, lancez: mysql -uroot

Pour que launchd démarre mysql maintenant et redémarre à la connexion: services de brassage commencent mysql

Ou, si vous ne voulez pas/n'avez pas besoin d'un service en arrière-plan, vous pouvez simplement exécuter: mysql.server start

0
as21

L'installation manuelle de MySQL en téléchargeant des paquetages pour la première fois génère un mot de passe par défaut pour root. Copiez et enregistrez cela. Si ce n'est pas fait d'une manière ou d'une autre lors de ré-installations successives, il ne montre pas ce mot de passe. 

Ainsi, vous ne pouvez pas vous connecter à root . Procédez comme suit:

  1. Trouvez des entrées liées à mysql dans system Sudo find / -name mysql
  2. Supprimez toutes les entrées liées à mysql en faisant rm -rf <mysql_entries_above>
  3. Téléchargez le dernier serveur mysql et installez-le.
  4. Vous serez promis avec un mot de passe par défaut que vous devez copier.
  5. Exécutez mysql_secure_installation et collez ce mot de passe lorsque vous êtes invité à entrer root.
  6. Suivez ensuite les étapes et modifiez le mot de passe administrateur lorsque vous y êtes invité.
0
Souvik Das