Définition du mot de passe de l'utilisateur root MySQL sur OS X

235

Je viens d'installer MySQL sur Mac OS X. L'étape suivante consistait à définir le mot de passe de l'utilisateur root, alors je l'ai fait ensuite:

  1. Lancez l'application de terminal pour accéder à la ligne de commande Unix.
  2. Sous l'invite Unix, j'ai exécuté ces commandes:

    $ cd /usr/local/mysql/bin
    $ ./mysqladmin -u root password 'password'

Mais, quand j'exécute la commande

$ ./mysql -u root, voici la réponse:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 224
Server version: 5.5.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Je peux entrer dans le mysql ligne de commande sans mot de passe!

Pourquoi est-ce?

madaura
la source

Réponses:

320

Essayez la commande FLUSH PRIVILEGESlorsque vous vous connectez au terminal MySQL. Si cela ne fonctionne pas, essayez l'ensemble de commandes suivant dans le terminal MySQL

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Changez NEWPASSWORD avec le mot de passe que vous voulez. Devrait être prêt!

Mise à jour : depuis MySQL 5.7, le passwordchamp a été renommé authentication_string. Lors de la modification du mot de passe, utilisez la requête suivante pour modifier le mot de passe. Toutes les autres commandes restent les mêmes:

mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';

Mise à jour : Le 8.0.15 (peut-être déjà avant cette version) la fonction PASSWORD () ne fonctionne pas, comme mentionné dans les commentaires ci-dessous. Vous devez utiliser:

UPDATE mysql.user SET authentication_string='password' WHERE User='root';

Scott
la source
24
Dans MySQL 5.7 et versions ultérieures, le nom de la colonne a changé. Vous devrez utiliser à la UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';place.
Carlos P
Merci pour l'information. Je vais modifier ma réponse pour refléter en conséquence.
Scott
8
Il semble également que la fonction PASSWORD () soit obsolète et que vous devriez simplement mettre le 'password'côté droit de l'égalité
kvn
6
Si vous ne pouvez pas vous connecter, comment cela vous aide-t-il?
Jake N
11
après avoir suivi ces étapes. Lorsque j'ai essayé de me reconnecter avec mon nouveau mot de passe, j'obtiensERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Þaw
197

Si vous ne vous souvenez pas du mot de passe que vous avez défini pour root et devez le réinitialiser, procédez comme suit:

  1. Arrêtez le serveur mysqld, cela varie selon l'installation
  2. Exécutez le serveur en mode sans échec avec contournement de privilèges

sudo mysqld_safe --skip-grant-tables;

  1. Dans une nouvelle fenêtre, connectez-vous à la base de données, définissez un nouveau mot de passe et videz les autorisations et quittez:

mysql -u root

Pour MySQL plus ancien que MySQL 5.7, utilisez:

UPDATE mysql.user SET Password=PASSWORD('your-password') WHERE User='root';

Pour MySQL 5.7+, utilisez:

USE mysql;

UPDATE mysql.user SET authentication_string=PASSWORD("your-password") WHERE User='root';

Actualisez et quittez:

FLUSH PRIVILEGES;

\q

  1. Arrêtez le serveur en mode sans échec et redémarrez votre serveur normal. Le nouveau mot de passe devrait fonctionner maintenant. A fonctionné à merveille pour moi :)
radtek
la source
4
C'était parfait merci! Sur Mac OSx Mavericks (2014), utilisez sudo / Library / StartupItems / MySQLCOM / MySQLCOM stop | start | restart
Chris Adams
2
passwordbesoin d'être authentication_stringmaintenant.
zx1986
Après MySQL 5.7, cela devrait l'être UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE User='root';, tout comme @Scott l'a dit.
zx1986
Merci de l'ajouter
radtek
1
Sur MacOSX lorsque mySQL est installé avec l'option « Préférence « volet »(menu Pomme -> Préférences Système ...), je trouve que je devais d'abord arrêter mySQL en utilisant le volet de préférence à l' étape 1 complète de ce qui précède utilise. sudo killN'a pas fonctionner comme le Mac OSx relancerait automatiquement un nouveau msql instantanément. Une fois que j'aurais arrêté mysql en utilisant le volet des préférences, je pourrais exécuter manuellementmysqld_safe --skip-grant-tables
toddcscar
85

Une fois que vous avez installé MySQL, vous devrez établir le mot de passe "root". Si vous n'établissez pas de mot de passe root, alors, il n'y a pas de mot de passe root et vous n'avez pas besoin d'un mot de passe pour vous connecter.

Donc, cela étant dit, vous devez établir un mot de passe root.

À l'aide du terminal, entrez les informations suivantes:

Installation: définissez le mot de passe de l'utilisateur root:

/usr/local/mysql/bin/mysqladmin -u root password NEW_PASSWORD_HERE

Si vous avez fait une erreur ou devez changer le mot de passe root, utilisez ce qui suit:

Changer le mot de passe root:

cd /usr/local/mysql/bin/
./mysql -u root -p
> Enter password: [type old password invisibly]

use mysql;
update user set password=PASSWORD("NEW_PASSWORD_HERE") where User='root';
flush privileges;
quit
bob
la source
5
Pour ceux qui ont MySQL 5.7, vous devriez utiliser update user set authentication_string=PASSWORD("NEW_PASSWORD_HERE") where User='root';au lieu d'utiliserset password=...
pdm
66

Les instructions fournies sur le site mysql sont si claires que celles mentionnées ci-dessus

  1. $ sudo /usr/local/mysql/support-files/mysql.server stop
  2. $ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables
  3. /usr/local/mysql/bin/mysql
  4. mysql> FLUSH PRIVILEGES;
  5. mysql> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'MyNewPass';
  6. mysql> exitou Ctrl + z
  7. $ sudo /usr/local/mysql/support-files/mysql.server stop
  8. $ sudo /usr/local/mysql/support-files/mysql.server start
  9. /usr/local/mysql/support-files/mysql -u root -p
  10. Entrez le nouveau mot de passe, c'est-à-dire MyNewPass

Référence: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Ankireddy Polu
la source
2
sous mac os 10.12.6, il donne une erreur après la 2ème commande ERREUR! Le serveur se ferme sans mettre à jour le fichier PID (/usr/local/mysql/data/myhostname.pid).
diEcho
Merci d'avoir indiqué où trouver la documentation. C'est un peu déroutant sur le mac lorsque vous pouvez également utiliser sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist et sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss .mysql.mysqld.plist pour arrêter et démarrer mysql. Utiliser sudo /usr/local/mysql/support-files/mysql.server stop semble être une meilleure approche.
Daniel
59
  1. Arrêtez le serveur mysqld.

    • Mac OS X: System Preferences > MySQL>Stop MySQL Server
    • Linux (depuis le terminal): sudo systemctl stop mysqld.service
  2. Démarrez le serveur en mode sans échec avec contournement de privilèges

    • Depuis le terminal: sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Dans une nouvelle fenêtre de terminal:

    • sudo /usr/local/mysql/bin/mysql -u root
  4. Cela ouvrira la ligne de commande mysql. De là, entrez:

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

    • FLUSH PRIVILEGES;

    • quit

  5. Arrêtez à nouveau le serveur mysqld et redémarrez-le en mode normal.

    • Mac OSX (depuis le terminal): sudo /usr/local/mysql/support-files/mysql.server restart
    • Terminal Linux: sudo systemctl restart mysqld
imbond
la source
1
Pour exécuter 5.7.23 sur High Sierra, cela fonctionne parfaitement. Merci.
Daniel
Dans MySQL 8.0.11, la fonction set de la 4ème étape a été supprimée. Vous vérifiez ici, celui-ci est travaillé. stackoverflow.com/a/52579886/621951
Günay Gültekin
22

Pour le nouveau Mysql 5.7 pour une raison quelconque, les commandes bin de Mysql ne sont pas attachées au shell:

  1. Redémarrez le Mac après l'installation.

  2. Démarrez Mysql:

    Préférences système> Mysql> bouton Démarrer

  3. Accédez au dossier d'installation de Mysql dans le terminal:

    $ cd /usr/local/mysql/bin/

  4. Accès à Mysql:

    $ ./mysql -u root -p

et entrez le mot de passe initial donné à l'installation.

  1. Dans le terminal Mysql, changez le mot de passe:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';

Désoxyseia
la source
16

Dans le terminal, écrivez mysql -u root -pet appuyez sur Retour. Entrez le mot de passe mysql actuel que vous devez avoir noté. Et définissez le mot de passe SET PASSWORD = PASSWORD('new_password');

Veuillez consulter cette documentation ici pour plus de détails.

Nitish Pareek
la source
10

Si vous avez oublié le mot de passe root de MySQL, vous ne vous en souvenez pas ou vous voulez vous effondrer… .. vous pouvez réinitialiser le mot de passe de la base de données mysql à partir de la ligne de commande sous Linux ou OS X tant que vous connaissez le mot de passe utilisateur root de la boîte tu es sur:

(1) Arrêtez MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

(2) Démarrez-le en mode sans échec:

sudo mysqld_safe --skip-grant-tables

(3) Ce sera une commande en cours jusqu'à la fin du processus, alors ouvrez une autre fenêtre shell / terminal , connectez-vous sans mot de passe:

mysql -u root

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

Dans la commande UPDATE ci-dessus, remplacez simplement le 'mot de passe' par votre propre nouveau mot de passe, assurez-vous de conserver les guillemets

(4) Économisez et tout à fait

FLUSH PRIVILEGES;

\q

(5) Démarrez MySQL

sudo /usr/local/mysql/support-files/mysql.server start
Homam Bahrani
la source
5

Lorsque j'ai installé OS X Yosemite, j'ai eu un problème avec Mysql. J'ai essayé beaucoup de méthodes mais aucune n'a fonctionné. J'ai trouvé un moyen assez simple. Essayez ceci.

  1. Connectez-vous d'abord au terminal à partir des privilèges su.

sudo su

  1. arrêtez mysql

sudo /usr/local/mysql/support-files/mysql.server stop

  1. démarrer en mode sans échec:

sudo mysqld_safe --skip-grant-tables

  1. ouvrez un autre terminal, connectez-vous en tant que privilèges su que, connectez-vous mysql sans mot de passe

mysql -u root

  1. changer le mot de passe

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

  1. privilèges de vidage

FLUSH PRIVILEGES;

  1. Vous avez terminé maintenant
Prem Timsina
la source
Merci beaucoup. Je me débattais un peu avec ça. Est-ce une nouveauté sur les dernières versions de mysql?
jpbourbon
5

Les méthodes mentionnées dans les réponses existantes ne fonctionnent pas pour mysql 5.7.6 ou version ultérieure. Selon la documentation mysql, c'est la méthode recommandée.

B.5.3.2.3 Réinitialisation du mot de passe root: instructions génériques

MySQL 5.7.6 et versions ultérieures:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Référence: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Imtiaz Shakil Siddique
la source
3

Si vous ne vous souvenez pas de votre mot de passe, la réponse de @ radtek a fonctionné pour moi, sauf que dans mon cas, j'avais configuré MySQL en utilisant brew, ce qui signifiait que les étapes 1 et 2 de sa réponse devaient être changées en:

  1. /usr/local/bin/mysql.server stop

  2. /usr/local/bin/mysqld_safe --skip-grant-tables

Remarque: le manque de sudo.

schminnie
la source
3

Je pense que cela devrait fonctionner:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD'

(Notez que vous devriez probablement remplacer root par votre nom d'utilisateur s'il n'est pas root)

rouille
la source
2

Arrêt du serveur MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

Démarrer MySQL en mode sans échec

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

Changer le mot de passe root

/usr/local/mysql/bin/mysql -u root

use mysql;
UPDATE user SET authentication_string=PASSWORD('NEW_PASSWORD') WHERE user='root';
FLUSH PRIVILEGES;
exit

Essai

Courir /usr/local/mysql/bin/mysql -u root

Saisissez maintenant le nouveau mot de passe pour commencer à utiliser MySQL.

Shreyas
la source
2

C'est exactement ce qui a fonctionné pour moi:

  1. Assurez-vous qu'aucun autre processus MySQL n'est en cours d'exécution. Pour le vérifier, procédez comme suit:

     a.From the terminal, run this command:
           lsof -i:3306 
       If any PID is returned, kill it using kill -9 PID
     b. Go To System Preferences > MySQL > check if any MySQL instances 
        are running, stop them.
  2. Démarrez MySQL avec la commande:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3. Le mot de passe de chaque utilisateur est stocké dans la table mysql.user sous les colonnes User et authentication_string respectivement. Nous pouvons mettre à jour le tableau comme:

    UPDATE mysql.user SET authentication_string='your_password' where User='root'
sgs
la source
2

macOS 10.14+ avec 5.7.26 installé à partir du programme d'installation de Mac OSX DMG.

Lorsque vous essayez d'utiliser la commande UPDATE publiée par d'autres utilisateurs, l'erreur suivante se produit:

ERREUR 1820 (HY000): Vous devez réinitialiser votre mot de passe à l'aide de l'instruction ALTER USER avant d'exécuter cette instruction.

Copiez le mot de passe qui vous a été présenté par le terminal ouvert du programme d'installation et procédez comme suit:

mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURPASSWORDHERE';

la source
2

Essayez ceci dans le terminal: /usr/local/bin/mysql_secure_installation

Jean-Luc Barat
la source
2

Pour référencer MySQL 8.0.15 +, la fonction password () n'est pas disponible. Utilisez la commande ci-dessous.

Veuillez utiliser

UPDATE mysql.user SET authentication_string='password' WHERE User='root';
Saurabh Verma
la source
1

Si vous avez oublié votre mot de passe ou si vous souhaitez le changer pour votre mysql:

  1. démarrez votre terminal et entrez:
sudo su
  1. Entrez le pass pour votre système
  2. Arrêtez votre mysql:
sudo /usr/local/mysql/support-files/mysql.server stop
  1. Laissez cette fenêtre OUVERTE, exécutez la deuxième fenêtre du terminal et entrez ici:
mysql -u root
  1. Et changez votre mot de passe pour mysql:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';

où "new_password" - votre nouveau pass. Vous n'avez pas besoin d'un ancien pass pour mysql.

  1. Rincez, quittez et vérifiez votre nouveau pass:
FLUSH PRIVILEGES;
  1. Fermez toutes les fenêtres et vérifiez votre nouveau pass pour mysql. Bonne chance.
Alexander Yushko
la source
1

Beaucoup de choses ont changé pour MySQL 8. J'ai trouvé la modification suivante de la documentation MySQL 8.0 "Comment réinitialiser le mot de passe root" fonctionne avec Mac OS X.

Créez un fichier temporaire $HOME/mysql.root.txtavec le SQL pour mettre à jour le mot de passe root:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<new-password>';

Cela permet mysql_native_passwordd'éviter le plug-in d'authentification 'caching_sha2_password' ne peut pas être chargé d' erreur, ce que j'obtiens si j'omet l'option.

Arrêtez le serveur, commencez par une --init-fileoption pour définir le mot de passe root, puis redémarrez le serveur:

mysql.server stop mysql.server start --init-file=$HOME/mysql.root.txt mysql.server stop mysql.server start

djb
la source
1

Ajoutons cette solution de contournement qui fonctionne sur mon ordinateur portable!

Mac avec Osx Mojave 10.14.5

Mysql 8.0.17 a été installé avec homebrew

  • J'exécute la commande suivante pour localiser le chemin de mysql

    brew info mysql

  • Une fois le chemin connu, je lance ceci:

    /usr/local/Cellar/mysql/8.0.17/bin/mysqld_safe --skip-grant-table

  • Dans un autre terminal, je lance:

    mysql -u root

  • À l'intérieur de ce terminal, j'ai changé le mot de passe root en utilisant:

    update mysql.user set authentication_string='NewPassword' where user='root';

  • et pour finir je cours:

    FLUSH PRIVILEGES;

Et voila le mot de passe a été réinitialisé.

Références :

Espoir Murhabazi
la source
1

Vous pouvez désactiver manuellement mysql sur Mac, en cliquant sur le menu  Apple et ouvrez les Préférences Système. Choisissez le panneau de préférences «MySQL», puis cliquez sur le bouton «Arrêter le serveur MySQL» pour arrêter MySQL Server sur Mac.

Après avoir arrêté votre mysql, vous devrez suivre ces étapes.

  • Vous devrez démarrer mysql en mode skip-grant-tables

$ sudo /usr/local/mysql/support-files/mysql.server start --skip-grant-tables

  • Dans votre terminal lui-même, entrez cette commande pour RINCER LES PRIVILÈGES existants

/ usr / local / mysql / bin / mysql mysql> FLUSH PRIVILEGES;

  • Vous devez maintenant modifier le mot de passe utilisateur

mysql> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'newpassword';

mysql> quitter

Ensuite, vous pouvez aller dans le menu Apple et ouvrir les Préférences Système. Choisissez le panneau de préférences «MySQL», puis cliquez sur le bouton «Arrêter le serveur MySQL» pour arrêter MySQL Server sur Mac.

Enfin, vous pouvez à nouveau accéder au menu Apple et ouvrir les Préférences Système. Choisissez le panneau de préférences «MySQL», puis cliquez sur le bouton «Démarrer MySQL Server» pour démarrer MySQL Server sur Mac.

J'espère que cela pourra aider

Siddhartha Thota
la source
1

Aucun des commentaires précédents ne résout le problème sur mon Mac. J'ai utilisé les commandes ci-dessous et cela a fonctionné.

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -u root
Thiago Farias
la source
0
mysqld_safe --skip-grant-tables
mysql -u root
UPDATE mysql.user SET authentication_string='yourpasswd' WHERE User='root';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Je dois en quelque sorte le faire à chaque redémarrage de mon Macbook. En le publiant à titre de référence personnelle, j'espère que cela aidera aussi quelqu'un d'autre.

lafeber
la source