Почему я получаю ошибку 256 при запуске “brew services httpd” на macOS Sonoma (14.0)?

Вопрос или проблема

У меня довольно долго работали Apache и MySQL на macOS через Homebrew без проблем.

Сегодня brew services list показал проблему:

Имя              Статус    Пользователь Файл
httpd             ошибка  256 root ~/Library/LaunchAgents/homebrew.mxcl.httpd.plist

brew service stop httpd, brew service start httpd, а также brew service restart httpd не сработали. Странно, что я всегда получал статус:

==> Успешно запущен httpd (метка: homebrew.mxcl.httpd)

После некоторых поисков и проб я нашел этот ответ от toloekka на странице Homebrew в GitHub.

Тем не менее, я не использовал команду launchctl unload.

Решение для Apache:

Предупреждение: Это решение не долговечно! Вам придется повторять эти 2 шага после перезагрузки.

  1. Остановите службу Apache напрямую, не используя менеджер служб Homebrew.

    sudo apachectl stop
    Пароль:
    

    После этого brew services list по-прежнему показывал ошибку 256.

  2. Перезапустите службу через Homebrew после ручной остановки.

    brew services restart httpd
    

Если вам этого достаточно, хорошо.

Однако в моем случае brew services start mysql тоже не сработал:

Ошибка загрузки: 5: Ошибка ввода/вывода

В лог-файле “*.err” в /opt/homebrew/var/mysql/ говорилось:

Недопустимое обновление сервера MySQL: Невозможно обновить с 80300 на 90001

Решение для MySQL:

  1. Показать информацию о mysql:

    brew info mysql
    
    ==> mysql: стабильная 9.0.1 (бутылированная)
    

    Эта информация также содержит решение.

  2. Следуйте шагам в Предупреждениях:

    ==> Предупреждения
    Обновление с MySQL <8.4 до MySQL >9.0 требует сначала запуска MySQL 8.4:
     - brew services stop mysql
     - brew install [email protected]
     - brew services start [email protected]
     - brew services stop [email protected]
     - brew services start mysql
    
  3. Проверьте, что mysql работает:

    brew services list
    Имя              Статус  Пользователь Файл
              ...
    mysql             запущен root ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    [email protected]        нет
              ...
    
  4. Измените аутентификацию для пользователей баз данных

    Поскольку плагин аутентификации mysql_native_password был удален в Mysql 9, я внезапно не смог установить соединение со своими базами данных.

    PhpMyAdmin выдал эту ошибку:
    #1524 - Плагин 'mysql_native_password' не загружен для всех пользователей баз данных, для которых в прошлом я выбрал Нативная аутентификация MySQL в качестве “Плагина аутентификации”.

    К счастью, это довольно просто исправить:

    1. Запустите Mysql CLI:

      mysql -uroot -p
      Введите пароль:
      
    2. В приглашении mysql> перечислите всех пользователей, использующих “mysql_native_password”:

      SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';
      
      +------------+-----------+-----------------------+
      | user       | host      | plugin                |
      +------------+-----------+-----------------------+
      | dbu246810  | localhost | mysql_native_password |
      +------------+-----------+-----------------------+
      
    3. Обновите пользователей mysql_native_password на caching_sha2_password

      ALTER USER 'dbu246810'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'my5ecretP4ssw0rd';
      
    4. Предоставьте пользователю dbu246810 все привилегии для базы данных dbs246810

      GRANT ALL PRIVILEGES ON dbs246810.* TO 'dbu246810'@'localhost';
      
    5. Примените привилегии

      После выполнения команды GRANT примените изменения с помощью:

      FLUSH PRIVILEGES;
      
    6. Выйдите

      exit;
      

      Теперь вы должны снова получить возможность установить соединение с базами данных.

Ответ или решение

Ошибка 256 при выполнении команды brew services httpd на macOS Sonoma (14.0) обусловлена рядом причин, связанных с запуском службы Apache через Homebrew. Рассмотрим проблемы и возможные решения, опираясь на предоставленный вами контекст.

Причины возникновения ошибки

  1. Неправильный статус службы: Команда brew services list показывала, что httpd имеет статус error 256. Это может свидетельствовать о том, что служба Apache не была корректно запущена или остановлена.

  2. Конфликт с другими инстанциями Apache: Если Apache был запущен через другой механизм (например, apachectl), это могло привести к конфликтам с менеджером служб Homebrew. Проверка, запущен ли Apache, с помощью sudo apachectl status поможет прояснить ситуацию.

  3. Проблемы с конфигурацией: Ошибки в конфигурации Apache, например, в файле httpd.conf, также могут препятствовать его успешному запуску через Homebrew.

Решение проблемы с Apache

Для устранения ошибки 256 выполните следующие шаги:

  1. Принудительная остановка Apache:

    sudo apachectl stop

    Это остановит инстанс Apache, который мог быть запущен ранее.

  2. Перезапуск службы через Homebrew:

    brew services restart httpd

    После остановки служба должна перезапуститься без ошибок.

  3. Проверка логов: Если проблема сохраняется, проверьте логи Apache в /usr/local/var/log/httpd, чтобы выяснить, в чем именно заключается проблема.

Проблема с MySQL

Вы упомянули, что при запуске MySQL возникла ошибка Bootstrap failed: 5: Input/output error, а также сообщение об ошибке в логе о несоответствии версий MySQL. Это часто происходит, когда версия MySQL обновляется без предварительного запуска предыдущей версии. Чтобы решить эту проблему:

  1. Выполнение команд для обновления MySQL:

    • Введите:
      brew services stop mysql
    • Установите промежуточную версию MySQL 8.4 и запустите её:
      brew install mysql@8.4
      brew services start mysql@8.4
    • После успешного запуска обновите до версии 9.0:
      brew install mysql
      brew services start mysql
  2. Обновление пользователей MySQL: Убедитесь, что все пользователи, которые использовали mysql_native_password, были обновлены на caching_sha2_password для предотвращения проблем с аутентификацией.

Заключение

Работа с Homebrew и службами на macOS может иногда приводить к неожиданным проблемам, особенно после обновлений системы или приложений. Ошибка 256 связана как с самим Apache, так и с конфликтами в MySQL, и требует систематического подхода к диагностике и исправлению. Если предложенные шаги не помогли, возможно, стоит рассмотреть возможность переустановки Homebrew или отдельных служб, для детального анализа конфигурации и логов.

Оцените материал
Добавить комментарий

Капча загружается...