0 votes

Comment exécuter une commande sudo sur mac ? problème avec le serveur mysql

J'ai installé le serveur mysql avec brew, et j'ai besoin d'exécuter manuellement cette commande à chaque fois que mon ordinateur démarre pour le faire fonctionner avec une application que je ne peux pas modifier.

sudo mkdir -p -- /var/run/mysqld/ ; sudo ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock

Que puis-je faire pour appeler cela automatiquement ? J'ai essayé avec Automator, mais je ne veux pas entrer mon mot de passe à chaque fois, quelle est la bonne façon de l'exécuter ou de résoudre ce problème ? (il se peut que je modifie les autorisations et que je l'exécute en tant qu'utilisateur normal).

Mysql fonctionne avec mon utilisateur normal, pas Root.

1voto

Camaleo Points 171

Sur OS X Yosemite, vous devez ajouter le script dans :

/Library/LaunchDaemons

en utilisant ce nom pour le script :

com.mysql.mysql.plist

et ce contenu :

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <dict>
       <key>SuccessfulExit</key>
       <false/>
    </dict>
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>
  </dict>
</plist>

vous obtiendrez un démarrage automatique de MySQL à chaque fois que vous redémarrerez le Mac.

assurez-vous de définir les privilèges appropriés pour le script :

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

Je viens de tester sur OS X 10.10.2 en sortant de MAMP PRO et ça marche comme sur des roulettes :-)

0voto

Mateusz Szlosek Points 21762

Vous pouvez créer Launch Agent et le placer à l'intérieur /Library/LaunchAgents répertoire. Cela permettra à votre code d'être exécuté en tant que root . Voici la documentation d'Apple sur Agents de lancement . Vous aurez besoin de créer un fichier plist, il ressemblera à ceci :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.mysql.script</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>-c</string>
        <string>/path/to/your/script.sh</string>
    </array>
    <key>LimitLoadToSessionType</key>
    <string>Aqua</string>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Sauvegardez-le et chown en tant que racine. Votre script doit également appartenir à Root et être exécutable. Avec cela, votre script sera toujours exécuté après la connexion.

NOTE : changer le chemin de votre script dans ce fichier plist.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X