412 votes

Brew installer mysql sur macOS

Je tente de configurer MySQL sur Mac OS 10.6 en utilisant Homebrew avec brew install mysql 5.1.52.

Tout se passe bien et je réussis également avec mysql_install_db.
Cependant, lorsque j'essaie de me connecter au serveur en utilisant :

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin -u root password 'monmotdepasse'

J'obtiens :

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin: connect to server at 'localhost' 
failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'

J'ai essayé d'accéder à mysqladmin ou mysql en utilisant -u root -proot également,
mais cela ne fonctionne pas avec ou sans mot de passe.

Il s'agit d'une toute nouvelle installation sur une toute nouvelle machine et autant que je sache, la nouvelle installation doit être accessible sans mot de passe root. J'ai également essayé :

/usr/local/Cellar/mysql/5.1.52/bin/mysql_secure_installation

mais j'obtiens également

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

0 votes

0 votes

Voir aussi : apple.stackexchange.com/a/199747/152271 ... ce n'est pas brew install, mais ça a fonctionné pour moi quand aucune des réponses ici n'a marché.

1 votes

FWIW J'ai utilisé mysql -u root et ça a fonctionné ici :|

764voto

Sedorner Points 3309

Je pense que l'on peut se retrouver dans cette position avec des versions plus anciennes de mysql déjà installées. J'avais le même problème et aucune des solutions ci-dessus n'a fonctionné pour moi. Je l'ai donc corrigé ainsi :

Utilisé les commandes remove & cleanup de brew, déchargé le script launchctl, puis supprimé le répertoire mysql dans /usr/local/var, supprimé mon /etc/my.cnf existant (je vous laisse décider si cela s'applique) et le plist de launchctl

Actualisé la chaine pour le plist. Notez également que votre répertoire de script de sécurité alternatif sera basé sur la version de MySQL que vous installez.

Étape par étape :

brew remove mysql

brew cleanup

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

rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

sudo rm -rf /usr/local/var/mysql

Ensuite, j'ai commencé depuis le début :

  1. installé mysql avec brew install mysql

  2. exécuté les commandes suggérées par brew : (voir note : ci-dessous)

    unset TMPDIR
    
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
  3. Démarrer mysql avec la commande mysql.server start, pour pouvoir vous connecter dessus

  4. Utilisé le script de sécurité alternatif :

    /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
  5. Suivi de la section launchctl du script du package brew tel que,

    #démarrer
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    #arrêter
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Note : la partie --force sur brew cleanup va également nettoyer les fûts obsolètes, je pense que c'est une fonctionnalité récente de Homebrew.

Note secondaire : un commentateur dit que l'étape 2 n'est pas nécessaire. Je ne veux pas le tester, donc à votre propre risque!

0 votes

Merci pour vos instructions détaillées! Installer mysql sur mac toute la nuit m'avait presque tué.

38 votes

Super réponse, merci! Une chose à ajouter: Bien que cela soit mentionné dans la réponse, je l'ai manqué et j'ai ainsi perdu environ 6 heures à essayer de me mettre en place sur Lion OSX. Assurez-vous absolument de supprimer l'ancien répertoire mysql à /usr/local/var/mysql si vous avez une version précédente de MySQL avant de réinstaller. Sinon, vous ne pourrez pas vous connecter en tant que root initialement pour définir le mot de passe et vous passerez beaucoup de temps à crier sur votre ordinateur.

3 votes

Allez dans ~/Library/LaunchAgents pour voir comment le fichier .plist pour mysql est en fait appelé - dans mon cas, il a été installé par homebrew donc vous devez modifier la procédure de désinstallation ci-dessus.

80voto

CorySimmons Points 376

Voici des instructions détaillées combinant la suppression de tout MySQL de votre Mac puis l'installation de la manière Brew comme Sedorner l'a écrit ci-dessus :

Supprimer complètement MySQL selon The Tech Lab

  • ps -ax | grep mysql
  • arrêter et tuer tous les processus MySQL
  • sudo rm /usr/local/mysql
  • sudo rm -rf /usr/local/var/mysql
  • sudo rm -rf /usr/local/mysql*
  • sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • sudo rm -rf /Library/StartupItems/MySQLCOM
  • sudo rm -rf /Library/PreferencePanes/My*
  • launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • modifier /etc/hostconfig et supprimer la ligne MYSQLCOM=-OUI-
  • rm -rf ~/Library/PreferencePanes/My*
  • sudo rm -rf /Library/Receipts/mysql*
  • sudo rm -rf /Library/Receipts/MySQL*
  • sudo rm -rf /private/var/db/receipts/*mysql*
  • sudo rm -rf /tmp/mysql*
  • essayer de lancer mysql, cela ne devrait pas fonctionner

Installer MySQL avec Brew selon l'utilisateur Sedorner de cette réponse StackOverflow

  • brew doctor et corriger les erreurs éventuelles

  • brew remove mysql

  • brew cleanup

  • brew update

  • brew install mysql

  • unset TMPDIR

      mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp # whoami est exécuté en ligne
  • mysql.server start

  • exécuter les commandes suggérées par Brew, ajouter MySQL à launchctl pour qu'il se lance automatiquement au démarrage

mysql devrait maintenant fonctionner et être en cours d'exécution en permanence comme prévu

Bon courage.

5 votes

J'ai aussi été mordu en faisant tout ce qui précède sans d'abord supprimer /tmp/mysql.sock.

0 votes

Merci, +1. Quelques commentaires : vous dites de sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist, puis quelques étapes plus tard vous essayez de launchctl unload ce fichier... mais il ne sera pas là, car vous l'avez supprimé. De plus, brew install mysql a exécuté l'étape mysql_install_db pour moi, pas besoin de le faire deux fois.

0 votes

@CorySimmons est-ce que cela signifie que je devrais utiliser mon propre nom, ou root dans la partie whoami de vos commandes ?

46voto

Alistair McMillan Points 795

J'ai eu le même problème. Il semble qu'il y ait quelque chose qui ne va pas avec les instructions de configuration ou les tables initiales qui sont créées. Voici comment j'ai réussi à faire fonctionner mysqld sur mon ordinateur.

Si le serveur mysqld est déjà en cours d'exécution sur votre Mac, arrêtez-le d'abord avec :

launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

Démarrer le serveur mysqld avec la commande suivante qui permet à quiconque de se connecter avec des permissions complètes.

mysqld_safe --skip-grant-tables

Ensuite, exécutez mysql -u root ce qui devrait maintenant vous permettre de vous connecter avec succès sans mot de passe. La commande suivante devrait réinitialiser tous les mots de passe root.

UPDATE mysql.user SET Password=PASSWORD('NouveauMotDePasse') WHERE User='root'; FLUSH PRIVILEGES;

Maintenant, si vous arrêtez la copie en cours de mysqld_safe et la relancez sans l'option skip-grant-tables, vous devriez pouvoir vous connecter avec mysql -u root -p et le nouveau mot de passe que vous venez de définir.

1 votes

Cela a fonctionné pour moi! J'ai commencé à deviner le mot de passe avant d'essayer cela et le mot de passe s'est avéré être 'password'. Alors essayez cela.

0 votes

Lancer mysqld_safe sans les tables de grant a fonctionné pour moi. Cependant, la mise à jour n'a pas fonctionné car je n'ai aucun enregistrement sur select * from mysql.user; Puisque nous sommes déjà connectés en tant que root, nous pouvons simplement en insérer un pour root en exécutant GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' IDENTIFIÉ PAR 'whatever'; FLUSH PRIVILEGES;

0 votes

J'utilisais le service/script d'arrêt, et il ne cessait de redémarrer. Est-ce parce que je n'ai jamais déchargé le LaunchAgent? (doh)

8voto

Mark Points 5304

J'avais le même problème juste maintenant. Si vous brew info mysql et suivez les étapes, il semble que le mot de passe root devrait être nouveau-mot-de-passe si je me souviens bien. Je voyais la même chose que vous voyez. Cet article m'a beaucoup aidé.

Il s'est avéré que je n'avais aucun compte créé pour moi. Lorsque je me suis connecté après avoir exécuté mysqld_safe et fait sélectionnez * from user; aucun enregistrement n'a été renvoyé. J'ai ouvert MySQLWorkbench avec le mysqld_safe en cours d'exécution et ajouté un compte root avec tous les privilèges attendus. Tout fonctionne bien pour moi maintenant.

8voto

Darren Newton Points 1352

D'accord, j'ai eu le même problème et je l'ai résolu. Pour une raison quelconque, le script mysql_secure_installation ne fonctionne pas directement lors de l'utilisation de Homebrew pour installer mysql, donc je l'ai fait manuellement. Sur la CLI saisissez:

mysql -u root

Cela devrait vous connecter à mysql. Maintenant, faites ce qui suit (issu de mysql_secure_installation) :

UPDATE mysql.user SET Password=PASSWORD('votre_nouveau_mdp') WHERE User='root';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'
DROP DATABASE test;
FLUSH PRIVILEGES;

Maintenant, quittez et reconnectez-vous à mysql avec : mysql -u root -p

1 votes

Cette solution ne fonctionne pas pour moi car mysql -u root ne me conduit pas à l'invite de mysql. Il affiche l'erreur Access denied for user 'root'@'localhost' (using password: NO)

0 votes

Aviez-vous une précédente installation de MySQL sur cette machine?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X