Mot de passe root mysql homebrew MacOSX

116

Pour une raison quelconque, MySQL a cessé de donner accès à root. Désinstallé et réinstallé avec Homebrew. Nouvelle installation, tables fraîches mais quand j'entre

mysql -u root -p

J'obtiens cette erreur:

Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NON)

J'ai réinstallé MySQL cinq fois mais il demande toujours un mot de passe. Comment puis-je réparer ça?

Alisher Ulugbekov
la source
Il y a presque une question exacte dans le superutilisateur. Suivez ces étapes: superuser.com/a/400345
Icarus
13
Il suffit de courir mysql_secure_installationet de répondre aux questions posées, simple
Abhinav Singh
8
La commande mysql_secure_installation demande un mot de passe root; si vous l'avez défini et oublié, cette procédure ne vous aidera pas.
JohnG
1
Si brew a installé MySQL 5.7, procédez comme suit: stackoverflow.com/a/33924648/133106
mrucci
FWIW a mysql -u roottravaillé ici ...
rogerdpack

Réponses:

115

Exécutez simplement cette commande (où NEWPASSest votre mot de passe):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

J'ai eu la même erreur et je l'ai corrigée de cette façon.

Egermano
la source
16
A travaillé pour moi. De toute évidence (peut-être), le signe dollar ($) doit être entré dans le cadre de la commande (ce n'est pas seulement une invite du shell).
plaques de cuisson du
3
Je recommanderais de ne pas inclure NEWPASS dans la commande pour éviter de stocker dans le fichier d'historique de votre shell. Cette commande demandera automatiquement une entrée si vous l'exécutez sans le pass, donc il n'y a aucune raison à cela. :)
Levi Figueira
4
si vous utilisez mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams
8
Ne fonctionne pas pour moi, avec mariadb (même avec @bryceadams note): / usr / local / opt / mariadb / bin / mysqladmin: se connecter au serveur à 'localhost' a échoué erreur: 'Accès refusé pour l'utilisateur' root '@' localhost ' '
trainoasis
3
pour mariadb, si l'accès est refusé pour l'utilisateur:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
upful
110

Aucun de ceux-ci n'a fonctionné pour moi. Je pense que j'avais déjà mysql quelque part sur mon ordinateur, donc un mot de passe y a été défini ou quelque chose. Après avoir passé des heures à essayer toutes les solutions, voici ce qui a fonctionné pour moi:

$ 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 -uroot

tout le crédit à @Ghrua

pilePoussoir
la source
6
les messages précédents ne fonctionnaient pas pour moi, mais celui-ci, bien que destructeur, fonctionnait très bien.
Clay
1
lorsque vous êtes finalement connecté à mysql, utilisez ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';pour définir votre nouveau mot de passe root.
Martin Braun
Cela a fonctionné pour moi sans supprimer ma base de données existante
Mwirabua Tim
Enfin une bonne solution de travail. @ 2020 MacOs catalina.
Mindaugas Kurlys le
Cela a fonctionné pour moi alors que la solution précédente ne fonctionnait pas. Je vous remercie!
Les Brown
65

Si vous avez défini et oublié par inadvertance le mot de passe root, et que vous ne voulez pas effacer toutes vos bases de données et recommencer parce que vous êtes paresseux et que vous avez oublié d'avoir une solution de sauvegarde en place, et que vous utilisez une installation Homebrew assez récente (Hiver 2013), voici les étapes pour réinitialiser votre mot de passe pour MySQL.

Arrêtez l'instance MySQL en cours d'exécution

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Maintenant, démarrez mysql à la main en sautant les tables de subventions et la mise en réseau

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

Notez que si lorsque vous exécutez echo $ (brew --prefix mysql) et qu'il ne répond pas comme "/ usr / local / opt / mysql" dans bash, vous devrez ajuster le chemin en conséquence.

Une fois que vous avez fait cela, vous devriez maintenant avoir une instance MySQL en cours d'exécution et non protégée.

Connectez-vous et définissez le mot de passe

mysql -u root

À l'invite, entrez la commande MySQL suivante pour définir un nouveau mot de passe pour l'utilisateur concerné.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

Si tout se passe comme prévu, il devrait dire:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

Quittez l'invite MySQL.

mysql> exit
Bye

Arrêter le serveur:

mysqladmin -u root shutdown

Maintenant, remettons le démon de lancement afin que notre MySQL soit à nouveau prêt:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Toutes nos félicitations. Vous venez de réinitialiser votre mot de passe root mysql. Versez-vous un café et mettez en place une solution de secours!

ablemike
la source
5
Pour arrêter le serveur MySQL non protégé après avoir changé le mot de passe:mysqladmin -u root shutdown
Vebjorn Ljosa
9
Je viens de rencontrer ce problème et j'ai trouvé que cette réponse était la plus proche. J'ai remarqué que ce passwordn'était pas une colonne valide dans mysql 5.7.9. Au lieu de cela, j'ai dû utiliser à la authentication_stringplace. Le reste des instructions fonctionnait parfaitement. Merci!
M. Scott Ford
5
Comme l'a dit M. Scott Ford, la commande appropriée est:update user set authentication_string=password('new_password_here') where user='root';
Panayotis
3
J'ai dû courir update mysql.user set authentication_string=password('none') where user='root';pour que ça marche. (Comme le commentaire ci - dessus à droite me, mais précédez mysql.à user.)
Steve Meisner
2
La fonction de mot de passe est supprimée depuis mysql 8.0.11. détails plus
chancyWu
62

J'ai eu le même problème il y a quelques jours. Cela se produit lorsque vous installez mysqlvia homebrewet exécutez le script d'initialisation ( mysql_install_db) avant de démarrer le mysqldémon.

Pour résoudre ce problème, vous pouvez supprimer mysqlles fichiers de données, redémarrer le service puis exécuter le script d'initialisation:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Britto
la source
a parfaitement fonctionné pour moi. Je ne veux pas vraiment définir un mot de passe pour ma machine locale, donc les autres solutions ne sont pas vraiment ce que je recherche
brad
3
mysql_install_db est obsolète, pensez à utilisermysqld --initialize
Brian
1
Je reçois juste No such file or directoryquand je lance cette première commande.
Agent Zebra le
1
après avoir exécuté la commande mysqld --initialize, vous remarquerez dans le message du journal sur la console qu'il a défini un mot de passe temporaire pour l'utilisateur root. . puis mysql vous demandera de réinitialiser le mot de passe .. vérifiez ceci dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde
@VikrantLabde "Cela fonctionnera certainement" - déclaration très ambitieuse. J'ai essayé ceci, utilisé le mot de passe temporaire qu'il m'a donné mais il n'a toujours pas accordé l'accès. Avez-vous dû échapper à la ponctuation par une barre oblique inverse?
Max Goodridge
47

Vous avez cette erreur après avoir installé mysql via home brew.

Alors supprimez d'abord l'installation. Puis réinstallez via Homebrew

brew update
brew doctor
brew install mysql

Puis redémarrez le service mysql

 mysql.server restart

Exécutez ensuite cette commande pour définir votre nouveau mot de passe root.

 mysql_secure_installation

Enfin, il demandera de recharger les privilèges. Dis oui. Puis connectez-vous à nouveau à mysql. Et utilisez le nouveau mot de passe que vous avez défini.

mysql -u root -p
Nirojan Selvanathan
la source
1
C'est la solution parfaite. J'avais déjà essayé de courir, mysql_secure_installationmais l'élément clé était lemysql.server restart
Johan
mysql_secure_installation était l'élément clé
Nik
Pour éviter les maux de tête ... tapez simplement utiliser la commande de redémarrage comme le dit nirojan, puis exécutez mysql_secure_installation
Dan Zuzevich
13

Si vous courez

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

Échec de la connexion avec le compte root:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

alors utilisateur admin par défaut est créé même nom que votre Mac OS compte nom d' utilisateur , par exemple johnsmit .

Pour vous connecter en tant que root, lancez:

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> exit
Bye
Arunas Bartisius
la source
Le nom du compte MacOS l'a fait pour moi.
Dan
puis-je ajouter un mot de passe pour l'utilisateur du nom de compte macos?
OrigamiEye
7

Cela a fonctionné pour moi:

sudo mysql -u root
Béatrice Cassistat
la source
4

Je viens de remarquer quelque chose de commun à la plupart des réponses ici, et je l'ai confirmé sur ma nouvelle installation. C'est en fait évident si vous regardez les recommandations pour fonctionner mysqladmin -u rootsans -p.

Il n'y a pas de mot de passe.

Brew configure mysql avec juste un utilisateur root et aucun mot de passe. Cela a du sens, je suppose, mais les avertissements post-installation ne le mentionnent pas du tout.

Spyder
la source
2
J'ai eu le problème d'accès refusé en supposant qu'il n'y avait pas de mot de passe root, donc je ne pense pas que le problème soit évident.
Jack Frost
Je ne dis pas que le problème est évident; pour tous ceux qui ont utilisé MySQL dans des circonstances normales, c'est complètement déroutant. Mais en regardant les autres réponses, la raison est claire.
Spyder
3

Essayez avec sudopour éviter l'erreur "Accès refusé":

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS

Matias Miranda
la source
3

Puisque la question a été posée / répondu il y a longtemps, ces principales réponses ne fonctionnent pas pour moi. Voici ma solution, en 2020.

Contexte : mysql / mariadb frais installé par homebrew.

Problème : le mot de passe root n'est ni vide ni inconnu.

Le correctif :

  1. mysql -u VOTRE-NOM D'UTILISATEUR-SYSTÈME -p
  2. Le mot de passe est vide (appuyez sur Entrée)
  3. ALTER USER 'root' @ 'localhost' IDENTIFIÉ PAR 'NEW-ROOT-PASSWORD';
  4. PRIVILÈGES DE RINÇAGE;

La raison :

  1. Homebrew créera un utilisateur avec des privilèges root nommé par le nom d'utilisateur MacOS actuel.
  2. il n'a pas de mot de passe
  3. Puisqu'il a tous les privilèges, réinitialisez simplement le mot de passe root avec cet utilisateur.
  4. Le mot de passe initial pour root a été généré aléatoirement.
Shiji.J
la source
Bonne réponse 2020. Je n'arrive pas à demander un mot de passe pour le nom d'utilisateur MacOS
OrigamiEye
2
  1. aller à l'icône Apple -> préférences système
  2. ouvrir Mysql
  3. dans les cas où vous verrez "initialiser la base de données"
  4. cliquez dessus
  5. il vous sera demandé de définir le mot de passe root -> définissez-y un mot de passe fort
  6. utilisez ce mot de passe pour vous connecter à mysql la prochaine fois

J'espère que cela t'aides.

user3325650
la source
Moyen simple et facile. Merci.
Ezequiel França
1

L'exécution de ces lignes dans le terminal a fait l'affaire pour moi et pour plusieurs autres qui avaient le même problème. Ces instructions sont listées dans le terminal une fois que brew a installé mysql avec succès.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

YOURPASSWORDest le mot de passe pour root.

erin
la source
Je reçois juste No such file or directoryquand j'exécute ces commandes
Agent Zebra
1

Vérifiez que vous n'avez pas de .my.cnf caché dans votre homedir. C'était mon problème.

user8845989
la source
1

Cela a fonctionné pour moi pour MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Démarrez mysql en exécutant

les services de brassage démarrent mysql

Exécutez le script d'installation

mysql_secure_installation

Il vous sera demandé de configurer un plugin VALIDATE PASSWORD. Entrez y pour ce faire.

Sélectionnez la validation de mot de passe requise (cela n'a pas vraiment d'importance si vous utilisez uniquement la base de données)

Sélectionnez maintenant y pour toutes les options restantes: Supprimer anon. utilisateurs; interdire les connexions root à distance; supprimer la base de données de test; recharger les tables de privilèges. Vous devriez maintenant recevoir un message de

All done!

Katie Lee
la source
pour démarrer mysql 5.7 utilisez stackoverflow.com/questions/51573145/…
Adam Winnipass
1

Cela a fonctionné pour moi. J'espère que cela fonctionne pour vous aussi !!! Suis les.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';
heyfranksmile
la source
2
Vous devez avertir que l'exécution de la rm -rf /usr/local/var/mysql/commande supprimera toutes les bases de données et les données Mysql de votre ordinateur!
Lashae
0

Le mot de passe par défaut lorsque vous installez mysql via brew est root, essayez ceci, cela a fonctionné pour moi

mysql -uroot -proot

user3805033
la source
1
De brew info mysql: Nous avons installé votre base de données MySQL sans mot de passe root. Pour le sécuriser, exécutez: mysql_secure_installation
ssc
@ssc La meilleure façon de définir un mot de passe sur une nouvelle installation.
alexventuraio
0

Terminal 1:

$ mysql_safe

Terminal 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
Dnyanesh Ghadge
la source
Cela aurait peut-être fonctionné au moment où la réponse a été publiée, mais a échoué entre-temps; avec la version 5.7.21 (actuelle) de MySQL, il échoue avec "Colonne inconnue" Mot de passe "dans" Liste des champs ".
ssc
UPDATE mysql.user SET authentication_string = PASSWORD ('xxxxxx!') WHERE User = 'root';
kevinc
0

J'utilise Catalina et j'utilise cette mysql_secure_installationcommande et fonctionne maintenant pour moi:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

je saisis rootcomme mot de passe actuel

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

et fais le reste

Agus Sudarmanto
la source
0

Donc, au cas où quelqu'un aurait la même situation et la même configuration que moi et serait également sur le point de devenir fou - cela a fonctionné pour moi .

Après une longue histoire, j'avais une MariaDB installée par brew qui continuait à redémarrer automatiquement lorsque je tuais son processus (c'était le fait de brew), qui avait un mot de passe root, que je ne connaissais pas .

$ brew services list

Cela montre quelque chose comme:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

Arrêtez le serveur MySQL avec:

$ brew services stop mariadb

Puis redémarrez-le sans l'utilisateur root (et sans utiliser brew):

$ mariadbd --skip-grant-tables &

Ici, cela mysql_secure_installationn'a pas fonctionné pour moi à cause du --skip-grant-tables, et cela ne fonctionnerait pas sans le --skip-grant-tablesparce qu'il avait besoin du mot de passe (que je n'avais pas).
L'essai $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2n'a renvoyé que des erreurs étranges et n'a rien fait; $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2également n'a pas fonctionné, a donné des erreurs différentes et des suggestions qui n'ont pas fonctionné pour moi.

Mais vous pouvez maintenant vous connecter à mysql sans informations d'identification:$ mysql

Ici, l'ancienne méthode de mise à jour de la table des utilisateurs pour root ne fonctionne pas car "La colonne" Mot de passe "ne peut pas être mise à jour".
La nouvelle méthode utilise alter userMAIS ne fonctionne qu'après l' avoir fait flush privileges;, faites-le d'abord.
Ensuite:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>est l'invite MySQL ici)
Puis flush privileges;recommencez.
Quittez le client MySQL.

Maintenant en ce qui concerne le brew, MariaDB ne fonctionne toujours pas, et utilise donc $ ps aux | grep -i mariadbpour trouver le pid et $ kill -9 <pid>lui.
Ensuite, utilisez $ brew services start mariadbpour le redémarrer.

MSpreij
la source
-1

Utilisez le fichier init pour démarrer mysql afin de changer le mot de passe root.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

Votre mot de passe root est maintenant changé. Assurez-vous d' arrêter correctement le serveur pour enregistrer le changement de mot de passe. Dans une nouvelle fenêtre de terminal, exécutez

mysqladmin -u root -p shutdown

et entrez votre nouveau pass.

Démarrez votre service et supprimez le fichier init

brew services start mysql
rm /tmp/mysql-init

Testé sur la version 8.0.19 de mysql

Sten
la source