Вопрос или проблема
У меня довольно долго работали 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 шага после перезагрузки.
-
Остановите службу Apache напрямую, не используя менеджер служб Homebrew.
sudo apachectl stop Пароль:
После этого
brew services list
по-прежнему показывал ошибку 256. -
Перезапустите службу через Homebrew после ручной остановки.
brew services restart httpd
Если вам этого достаточно, хорошо.
Однако в моем случае brew services start mysql
тоже не сработал:
Ошибка загрузки: 5: Ошибка ввода/вывода
В лог-файле “*.err” в /opt/homebrew/var/mysql/
говорилось:
Недопустимое обновление сервера MySQL: Невозможно обновить с 80300 на 90001
Решение для MySQL:
-
Показать информацию о mysql:
brew info mysql
==> mysql: стабильная 9.0.1 (бутылированная)
Эта информация также содержит решение.
-
Следуйте шагам в
Предупреждениях
:==> Предупреждения Обновление с 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
-
Проверьте, что mysql работает:
brew services list Имя Статус Пользователь Файл ... mysql запущен root ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist [email protected] нет ...
-
Измените аутентификацию для пользователей баз данных
Поскольку плагин аутентификации
mysql_native_password
был удален в Mysql 9, я внезапно не смог установить соединение со своими базами данных.PhpMyAdmin выдал эту ошибку:
#1524 - Плагин 'mysql_native_password' не загружен
для всех пользователей баз данных, для которых в прошлом я выбралНативная аутентификация MySQL
в качестве “Плагина аутентификации”.К счастью, это довольно просто исправить:
-
Запустите Mysql CLI:
mysql -uroot -p Введите пароль:
-
В приглашении
mysql>
перечислите всех пользователей, использующих “mysql_native_password”:SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';
+------------+-----------+-----------------------+ | user | host | plugin | +------------+-----------+-----------------------+ | dbu246810 | localhost | mysql_native_password | +------------+-----------+-----------------------+
-
Обновите пользователей mysql_native_password на caching_sha2_password
ALTER USER 'dbu246810'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'my5ecretP4ssw0rd';
-
Предоставьте пользователю
dbu246810
все привилегии для базы данныхdbs246810
GRANT ALL PRIVILEGES ON dbs246810.* TO 'dbu246810'@'localhost';
-
Примените привилегии
После выполнения команды GRANT примените изменения с помощью:
FLUSH PRIVILEGES;
-
Выйдите
exit;
Теперь вы должны снова получить возможность установить соединение с базами данных.
-
Ответ или решение
Ошибка 256 при выполнении команды brew services httpd
на macOS Sonoma (14.0) обусловлена рядом причин, связанных с запуском службы Apache через Homebrew. Рассмотрим проблемы и возможные решения, опираясь на предоставленный вами контекст.
Причины возникновения ошибки
-
Неправильный статус службы: Команда
brew services list
показывала, что httpd имеет статусerror 256
. Это может свидетельствовать о том, что служба Apache не была корректно запущена или остановлена. -
Конфликт с другими инстанциями Apache: Если Apache был запущен через другой механизм (например,
apachectl
), это могло привести к конфликтам с менеджером служб Homebrew. Проверка, запущен ли Apache, с помощьюsudo apachectl status
поможет прояснить ситуацию. -
Проблемы с конфигурацией: Ошибки в конфигурации Apache, например, в файле
httpd.conf
, также могут препятствовать его успешному запуску через Homebrew.
Решение проблемы с Apache
Для устранения ошибки 256 выполните следующие шаги:
-
Принудительная остановка Apache:
sudo apachectl stop
Это остановит инстанс Apache, который мог быть запущен ранее.
-
Перезапуск службы через Homebrew:
brew services restart httpd
После остановки служба должна перезапуститься без ошибок.
-
Проверка логов: Если проблема сохраняется, проверьте логи Apache в
/usr/local/var/log/httpd
, чтобы выяснить, в чем именно заключается проблема.
Проблема с MySQL
Вы упомянули, что при запуске MySQL возникла ошибка Bootstrap failed: 5: Input/output error
, а также сообщение об ошибке в логе о несоответствии версий MySQL. Это часто происходит, когда версия MySQL обновляется без предварительного запуска предыдущей версии. Чтобы решить эту проблему:
-
Выполнение команд для обновления 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
- Введите:
-
Обновление пользователей MySQL: Убедитесь, что все пользователи, которые использовали
mysql_native_password
, были обновлены наcaching_sha2_password
для предотвращения проблем с аутентификацией.
Заключение
Работа с Homebrew и службами на macOS может иногда приводить к неожиданным проблемам, особенно после обновлений системы или приложений. Ошибка 256 связана как с самим Apache, так и с конфликтами в MySQL, и требует систематического подхода к диагностике и исправлению. Если предложенные шаги не помогли, возможно, стоит рассмотреть возможность переустановки Homebrew или отдельных служб, для детального анализа конфигурации и логов.