¿Cómo ejecutar un comando sudo en mac? .. problema con el servidor mysql

0

He instalado el servidor mysql con brew y necesito ejecutar este comando manualmente cada vez que mi computadora comienza a funcionar con una aplicación que no puedo editar.

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

¿Qué puedo hacer para llamar esto automáticamente? Lo intenté con Automator, pero no quiero ingresar mi contraseña cada vez, ¿cuál es la forma correcta de ejecutar esto o solucionarlo? (puede cambiar permisos y ejecutar esto como usuario normal)

Mysql se ejecuta con mi usuario normal, no con root.

    
pregunta Arnold Roa 22.12.2014 - 16:03

2 respuestas

1

En OS X Yosemite debes agregar el script en:

/Library/LaunchDaemons

usando este nombre para el script:

com.mysql.mysql.plist

y este contenido:

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

iniciará MySQL automáticamente cada vez que reinicie la Mac.

asegúrese de establecer los privilegios adecuados para el 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

Solo lo probé en OS X 10.10.2 mientras salía de MAMP PRO y funciona como una brisa :-)

    
respondido por el Camaleo 23.02.2015 - 20:40
0

Puedes crear Launch Agent y colocarlo dentro del directorio /Library/LaunchAgents . Esto asegurará que su código se ejecute como root . Aquí hay documentación de Apple sobre Agentes de lanzamiento . Tendrá que crear un archivo plist, se verá así:

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

Guárdalo y chown como root. Su script también debe ser propiedad de root y ser ejecutable también. Con esto, su script se ejecutará siempre después de iniciar sesión.

NOTA: cambie la ruta a su secuencia de comandos en este archivo plist.

    
respondido por el Mateusz Szlosek 22.12.2014 - 16:17

Lea otras preguntas en las etiquetas