Comment puis-je désactiver MySQL à partir du démarrage?

9

J'ai un MBA mi-2013 sous OSX 10.9.

Le processus qui commence à chaque démarrage est mysqld. Je crois que c’est à partir d’une ancienne version de MySQL que j’avais installée (via AMPPS ). J'ai ensuite installé MAMP Pro et j'ai souvent des conflits entre ces deux processus. Chaque fois que j'arrête et redémarre mon Mac, je dois trouver le processus en cours d' mysqldexécution (sur le moniteur d'activité), le quitter, puis démarrer MAMP (via la commande de terminal: /Application/MAMP/bin/startMysql.shne fonctionnera pas ailleurs).

Je me demande donc comment je peux empêcher cette opération mysqldde s'exécuter à chaque démarrage.

Zaki Aziz
la source
Pouvez-vous exécuter pspour suivre le processus parent et voir ce qui commence mysqld?
bmike
Voyons si quelqu'un a des informations plus ciblées. Suivre les processus et les tuer depuis le terminal n'est pas le plus facile à écrire. Vous pouvez obtenir les mêmes informations à partir du moniteur d'activité - sélectionnez mysql - puis info, puis recherchez le processus parent.
bmike
1
Réponse utile possible de super
Mikey TK
Vous ne savez pas si cela peut vous aider, car il s’agit d’applications lancées au départ. Consultez toutefois les éléments Préférences Système >> Utilisateurs et groupes >> Éléments de connexion. Vous trouverez l'application qui est lancée au démarrage.
FeliceM
Êtes-vous sûr que c'est AMPPS et pas seulement MAMP qui s'exécute au démarrage? Redémarrez l'ordinateur et entrez 'ps -Awww | grep mysql 'dans le terminal. Cela devrait au moins vous dire quel exécutable est en cours d'exécution.
MJ Walsh

Réponses:

9

Terminal ouvert, puis:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Où "xxx.xxx" est inclus dans le résultat de la première commande, par exemple "org.macports.mysql". Le mot de passe de la commande "sudo" est le mot de passe de votre propre compte utilisateur.

Il est vrai que sudo n'est pas nécessaire pour "lister", mais comme vous avez déjà indiqué un mot de passe sudo pour la première commande, il est stocké pendant une courte période dans la mémoire de session et n'est pas requis pour la deuxième commande (qui est privilégiée). Sinon, sautez simplement sudo sur la première commande et utilisez-le sur la seconde. Il y a plus d'une façon d'écorcher un chat.

utilisateur64759
la source
2
sudo launchctl list | grep -i mysqlne donne aucun résultat. Ni ne sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz
Vous pouvez utiliser le panneau d’administration AMPPS pour désactiver le démon AMPPS MySQL. Ou mieux encore, il suffit de désinstaller complètement AMPPS, car un autre framework est maintenant installé.
user64759
J'ai désinstallé AMPPS et j'ai toujours ce problème.
Zaki Aziz
2

Si la version de MySQL précédemment installée provient de la page Téléchargements de la communauté MySQL sur le site SUN / Oracle, il est probable que le launchddémarrage du mysqldprocessus ne soit pas impliqué . Pour une raison quelconque, le script de démarrage distribué avec MySQL utilise la technologie obsolète "Éléments de démarrage" pour démarrer les processus au démarrage. En fait, même la distribution binaire actuelle (5.6.15) de mysqldStartupItems utilise le serveur pour démarrer le serveur sous OS X (?!)

Le script de démarrage qui lance la version en conflit de MySQL est probablement situé à /Library/StartupItems/MYSQLCOM/MYSQLCOM. Au démarrage, cet élément de démarrage examinera le fichier à /etc/hostconfigpour déterminer si le paramètre de la variable "MYSQLCOM" est défini sur "-YES-". Si tel est le cas, le script de démarrage sera lancé mysqld.

Il devrait être possible de désactiver le démarrage de MySQL en modifiant la ligne /etc/hostconfigspécifiant qu'elle MYSQLCOM=-YES-doit dire MYSQLCOM=-NO-(ce qui devrait désactiver le processus de démarrage lors du prochain démarrage).

Vous pouvez mettre fin à l'instance en cours d' mysqldexécution en exécutant la commande suivante:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Pour désactiver de manière permanente le démarrage du processus incorrect mysqld , il devrait être possible d'arrêter le démon en utilisant la commande ci-dessus, puis de supprimer l'élément de démarrage MySQL à l'aide de la commande suivante:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Remarque: la sous -fenêtre de préférences MySQL peut également être installée sur /Library/PreferencePanes/MySQL.prefpaneou ~/Library/PreferencePanes/MySQL.prefpane... Cette sous-fenêtre de préférences peut également être supprimée pour "nettoyer" des éléments de l'ancienne installation MySQL.

Eddie Kelley
la source
Malheureusement, je n'ai rien dans mon fichier / etc / hostconfig qui soit associé à MySQL: i.imgur.com/3C2jxPZ.png
Zaki Aziz
Et sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stoprien ne rapporte non plus: i.imgur.com/ukHtW5x.png
Zaki Aziz
2

Ce qui suit a fonctionné pour moi avec mysql 8.0.12installé à l’aide de Homebrew dans macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Vikram Hosakote
la source
Cela a fonctionné pour rencontré sur mysql installé par homebrew. Merci.
Almas Dusal
1

Il serait peut-être plus facile de renommer mysqld (ou de le déplacer / sauvegarder / le supprimer), puis de le redémarrer et de rechercher le message d'erreur pour l'élément de lancement qui essayait de démarrer le programme qui n'était plus disponible.

Les autres réponses semblent couvrir le besoin de rechercher des agents de lancement et des démons de lancement, ainsi que de suivre le PID qui ne fonctionne généralement pas pour les démons car ils ont généralement un PID parent de 1.

De plus, étant donné que mysql n'est pas livré avec Mavericks, vous devriez pouvoir suivre le package d'installation que vous avez sélectionné ou utiliser mdfind mysqldpour localiser le package qui a amené cette base de données sur votre Mac, puis recherchez les instructions de désinstallation / désactivation de ce paquet de mysql. Vous voudrez également consulter les préférences système au cas où vous y auriez installé un contrôle pour démarrer le logiciel.

bmike
la source
mdfind mysqldne montre aucun fichier MySQL lié à AMPPS, mais uniquement des fichiers liés à MAMP (et quelques-uns des programmes MySQL que j'ai installés tels que MySQL Workbench)
Zaki Aziz
1

Commencez par rechercher le processus parent qui a démarré votre mysql. À partir du terminal, exécutez une pscommande pour connaître le processus. vous pouvez utiliser -jou -lpour lister l'ID parent ppid. Donc, cela va vous montrer:

$ ps -axjc | grep mysql

La première colonne est votre ID utilisateur, la seconde est l'ID de processus, la troisième est l'ID parent.

Si l'ID parent est 1, il aura été lancé par le démon de lancement racine, ce qui signifie probablement qu'il provient de l'un des LaunchDaemons ou StartupItems. S'il s'agit d'un processus qui n'est pas 1 mais qu'il s'agit d'un processus launchd, il s'agit probablement des LaunchAgents ou de vos éléments de connexion système.

root                1     0     1      0    0 Ss     ??    4:49.10 launchd
alblue            257     1   257      0    0 Ss     ??    0:16.29 launchd
_spotlight        415     1   415      0    0 Ss     ??    0:00.94 launchd

Ainsi, le processus 1 est lancé au démarrage du système et tout processus associé au processus parent 1 provient des démons système. Tout (dans ce cas) avec un processus parent de 257 est en cours de lancement à partir de l'un des objets LaunchAgents ou LoginItems.

Gardez à l'esprit que le nom du démon de lancement ou de l'élément de démarrage n'a pas nécessairement le nom "mysql" - il pourrait avoir été exécuté par un programme ou un élément de connexion différent (par conséquent, une simple recherche par nom peut ne pas le trouver). . Une fois que vous avez trouvé ce qui l’a lancé, vous pourrez peut-être savoir d’où il vient.

AlBlue
la source