1 votos

cómo iniciar un servidor mysql al iniciar sesión

Actualmente uso Valet para desarrollar sitios, y muchos de esos sitios necesitan bases de datos SQL. Para alojar bases de datos SQL, ejecuto un servidor mariaDB desde el Terminal. Para iniciar el servidor MySQL y poder conectarme a las bases de datos, ejecuto el comando sudo mysql.server start Quiero que el servidor se inicie en el inicio de sesión, por lo que normalmente sólo tendría este comando ejecutar en el inicio de sesión, pero requiere el comando sudo. ¿Qué debo cambiar y cómo lo hago para no necesitar la parte sudo del comando y poder simplemente iniciar el servidor al iniciar la sesión?

1 votos

Ver si esta pregunta y respuesta ayuda. No es una pregunta duplicada pero tiene información que podría ayudarte.

2voto

Douglas Puntos 10417

La mejor manera de hacerlo es crear un launchd .plist, cópielo en ~/Library/LaunchAgents y dejar que el sistema lo maneje por ti.

Ejemplo de .plist:

<?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.user.startMySQL</string>
        <key>ProgramArguments</key>
        <array>
          <string>mysql.server</string>
          <string>start</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

Prefiero utilizar la convención de nomenclatura de archivos com.user.<name of function>.plist al nombrarlos para poder identificar fácilmente lo que está cargado y lo que no.

A continuación, tienes que cargar este .plist como root para que se ejecute como root

$ sudo launchctl load com.user.startMySQL.plist

Para verificar que se ha cargado puedes emitir el comando sudo launchctl list y el comando mysql para iniciar una conexión con el servicio MySQL.

Tenga en cuenta que esto es sólo un ejemplo simple - es posible que desee crear un script para comprobar si mysqld ya se está ejecutando antes de lanzarlo.

0 votos

Pero parece que tendré que ejecutar este comando cada vez que quiera usar el servidor, así que no veo cómo esto es mejor que lo que hago ahora. en realidad sólo estaba buscando qué permisos o propietario cambiar para hacer que este comando sea ejecutable por mí sin sudo, para que entonces pueda simplemente ejecutar este comando en el inicio de sesión de alguna manera.

0 votos

Sólo tiene que hacerlo una vez. Se lanzará MySQL automáticamente cada vez que se conecte

0 votos

Oh ok gracias Dime si lo he entendido bien: 'launchd' es un demonio que se inicia en el lanzamiento y ejecuta cada trabajo en 'launchctl'. Para añadir un trabajo a launchctl, defínalo en un archivo .plist y copie ese archivo en ~/Library/LaunchAgents, luego cargue el plist en launchctl con$ launchctl load com.user.startMySQL.plist y la razón por la que no hay que dar una ruta en el comando es que un nombre de archivo es suficiente mientras sea un archivo en el directorio 'LaunchAgents' porque launchctl busca en ese directorio. Una vez cargado en launchctl, launchd ejecutará el nuevo trabajo al iniciar la sesión.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X