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?
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';
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');
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:
Arrêtez votre serveur MySQL.
Ajoutez ce qui suit à la fin de la section [mysqld] du fichier my.cnf et enregistrez-le.
skip-grant-tables
Démarrez le serveur MySQL.
Dans le terminal, tapez
mysql -u root -p
entrer dans la commande MySQL Invite.
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.
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).
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:
É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:
Important : à l'étape 2, vous devez remplacer votre mot de passe.
J'espère que ça va se passer pour vous.
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;
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
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');
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é.
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.
Pour Mysql 5.7 j'utilise
Shell $> Sudo grep 'mot de passe temporaire' /var/log/mysqld.log
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;
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!
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'
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
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:
Sudo find / -name mysql
rm -rf <mysql_entries_above>
mysql_secure_installation
et collez ce mot de passe lorsque vous êtes invité à entrer root.