Actualizar a El Capitan ha roto MySQL y Apache

Debido a circunstancias imprevistas, me vi obligado a actualizar a OS X 10.11 (El Capitan).

Aquí, el proceso que seguí fue:

  1. instale Yosemite en un disco duro externo;
  2. migrar datos de MacBook Pro a un disco duro externo;
  3. luego vuelva a formatear la MacBook Pro;
  4. instale Yosemite en MacBook Pro;
  5. actualice la MacBook Pro a El Capitán;
  6. y migre los datos del disco duro externo a MacBook Pro.

Durante la migración, logré mantener las bases de datos para MySQL, y parece ser la misma versión que tenía con Mavericks (mysql-5.6.14-osx10.7-x86_64).

Sin embargo, cuando voy al Panel de preferencias para MySQL en las Preferencias del sistema, me dice "La instancia del servidor MySQL no se está ejecutando" y el botón de inicio está deshabilitado.

He realizado varias búsquedas y las sugerencias no parecen coincidir con el problema específico que tengo, o no tengo la confianza suficiente para probarlas en caso de que empeore las cosas.

Eché un vistazo al archivo "my.cnf" y la configuración está comentada y tiene valores en blanco (una serie de puntos de marcador de posición).

Además, el alias de la carpeta MySQL "mysql" se ha ido.

Además de esto, estoy teniendo problemas con el propio servidor web.

Seguí el consejo en una respuesta de StackOverflow , y aunque detuvo algunos de los errores, cuando ejecuto "apachectl configtest" desde la Terminal, obtengo:

AH00526: Syntax error on line 183 of /private/etc/apache2/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

No hace falta decir que no soy tan competente en la línea de comandos.

En esta etapa, no tengo idea de lo que está pasando.

Editar 1

Hice una copia de seguridad de "httpd.conf" y "extras/httpd-mpm.conf" mientras seguía los errores informados por "apachectl configtest", en cada instancia comentando las líneas ofensivas en lugar de eliminarlas.

Pero después terminé con:

"AH00526: Syntax error on line 25 of /private/etc/apache2/extra/httpd-autoindex.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration"

... Me di por vencido.

Todo lo que tenía en / etc, por ejemplo, la configuración de apache se habría anulado. Debe configurar para que los archivos estén en otro lugar, probablemente sea más fácil reinstalar y restablecer la configuración desde cero y sus copias de seguridad.
Hola Mark, no tengo ni idea de cómo hacer nada de eso. ¿Tienes algunas referencias para que las use?
@WayneSmallman ¿Cuál era la versión anterior del sistema? ¿Yosemite o incluso Mavericks? ¿Acaba de actualizar o migró (= importó con el Asistente de migración) el sistema anterior?
Hola @klanomath, proporcionaré más información en la publicación de apertura.

Respuestas (2)

MySQL-5.6.14 se instaló con un StartUpItem que es necesario para iniciar automáticamente MySQL durante el arranque. Mientras tanto, StartUpItems está en desuso (y probablemente no se migró por lo tanto) y en su lugar se usan demonios de lanzamiento.

Para recuperar su MySQL, haga lo siguiente:

  1. Crear un enlace suave:

    sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64 /usr/local/mysql
    
  2. Revisa los permisos:

    ls -laO /usr/local
    

    El comando debe revelar:

    ...
    lrwxr-xr-x   1 root  wheel  -  27 13 Apr 00:04 mysql -> mysql-5.6.14-osx10.7-x86_64
    drwxr-xr-x  17 root  wheel  - 578 13 Apr 00:05 mysql-5.6.14-osx10.7-x86_64
    ...
    
  3. Cree el archivo /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist con el siguiente contenido:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
        <key>ProcessType</key>       <string>Interactive</string>
        <key>Disabled</key>          <false/>
        <key>RunAtLoad</key>         <true/>
        <key>KeepAlive</key>         <true/>
        <key>SessionCreate</key>     <true/>
        <key>LaunchOnlyOnce</key>    <false/>
        <key>UserName</key>          <string>_mysql</string>
        <key>GroupName</key>         <string>_mysql</string>
        <key>ExitTimeOut</key>       <integer>600</integer>
        <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
        <key>ProgramArguments</key>
            <array>
                <string>/usr/local/mysql/bin/mysqld</string>
                <string>--user=_mysql</string>
                <string>--basedir=/usr/local/mysql</string>
                <string>--datadir=/usr/local/mysql/data</string>
                <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
                <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
                <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
                <string>--port=3307</string>
            </array>
        <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
    </dict>
    </plist>
    

    El archivo necesita una línea vacía final/nueva línea.

    Puede reemplazar --port=3307 por --port=3306 dependiendo de su configuración anterior.

  4. Cambiar los permisos del archivo:

    sudo chown root:wheel /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
    sudo chmod 644 /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
    
  5. Cargue el demonio de lanzamiento con

    sudo launchctl load -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
    

Recomiendo encarecidamente actualizar a una versión más nueva de MySQL.


Errores de apache:

El error

AH00526: Syntax error on line 183 of /private/etc/apache2/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

está relacionado con el antiguo archivo de configuración de Apache (10.9) que está utilizando:

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>

En el nuevo archivo de configuración de Apache (10.11), la sección se ve así:

    <Directory />
        AllowOverride none
        Require all denied
    </Directory>

Recomiendo configurar Apache con un archivo de configuración 2.4 (incluido en 10.11).

El comando 'Pedir' ha quedado obsoleto. Era un remanente de Apache 2.2. Está utilizando Apache 2.4 ahora. Lo que sospecho que sucedió es que copió sus .confarchivos de Apache 2.2 a su nueva instalación 2.4.

En algún lugar de sus archivos httpd.conf bajo las secciones, tiene algo como esto:

Order deny,allow 
Deny from all

Lo que tienes que hacer es reemplazarlo con

Require all denied

Además, asegúrese de que está cargando los módulos que se enumeran a continuación. Simplemente busque en su httpd.confarchivo las siguientes líneas:

  • LoadModule authz_core_module modules/mod_authz_core.so
  • LoadModule authz_host_module modules/mod_authz_host.so