Come eseguire un comando sudo su mac? .. problema con il server mysql


0

Ho installato il server mysql con brew, e ho bisogno di eseguire manualmente questo comando ogni volta che il mio computer inizia a farlo funzionare con un'applicazione che non posso modificare.

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

Cosa posso fare per chiamare questo automaticamente? Ho provato con Automator, ma non voglio inserire la mia password ogni volta, qual è il modo giusto per eseguirlo o per risolvere questo problema? (può cambiare i permessi ed eseguirlo come utente normale)

Mysql è in esecuzione con il mio utente normale, non con root.


Hai provato e AppleScript?
bretonics

Risposte:


1

Su OS X Yosemite dovresti aggiungere lo script in:

/Library/LaunchDaemons

usando questo nome per lo script:

com.mysql.mysql.plist

e questo contenuto:

<!--?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>

MySQL verrà avviato automaticamente ogni volta che riavvierai il Mac.

assicurati di impostare i privilegi appropriati per lo 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

Appena testato su OS X 10.10.2 durante l'uscita da MAMP PRO e funziona come un gioco da ragazzi :-)


0

Puoi creare Launch Agent e mettilo dentro /Library/LaunchAgents directory. Ciò garantirà che il tuo codice venga eseguito come root. Ecco la documentazione Apple Agenti di lancio . Avrai bisogno di creare un file plist, sarà simile a questo:

<?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>

Salvalo e chown è come root. Anche lo script dovrebbe essere di proprietà di root ed essere anche eseguibile. Con questo lo script verrà eseguito sempre dopo l'accesso.

NOTA: cambia percorso al tuo script in questo file plist.


È possibile inserirlo nella cartella utente? ~ / Library / LaunchAgents
Arnold Roa

@ArnoldRoa L'agente launchd per utente viene eseguito come utente, non come root (UID). Maggiori informazioni sugli UID qui: developer.apple.com/library/mac/technotes/tn2083/_index.html#//...
Mateusz Szlosek
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.