Не удалось запустить mysqld на сервере OSX - раньше работал

У нас было запущено веб-приложение на сервере OSX, поддерживаемое mysql. На сервере работает ядро ​​Darwin 9.8.0. Mysql версия 5.0.67.

Раньше все работало нормально, и мы не совсем уверены, что могло измениться. С тех пор компьютер был перезагружен, чтобы увидеть, запустится ли mysql. К сожалению, это означает, что я не могу сказать вам, была ли она ошибочно перезагружена другим пользователем до этого, и это вызвало проблему.

Я получаю следующие ошибки:

/usr/libexec/mysqld: File './mysql-bin.124367' not found (Errcode: 13)
090826 14:42:50 [ERROR] Could not use mysql-bin for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.

Этот файл, который он не смог найти, действительно существует... Итак, я отключил вход в my.cnf, чтобы посмотреть, что еще может происходить. Теперь я получаю ошибку:

090826 14:52:16 [ERROR] Can't start server: Bind on TCP/IP port: Can't assign requested address
090826 14:52:16 [ERROR] Do you already have another mysqld server running on port: 3306 ?

Я сделал ps -Aef | grep mysql и не нашел других работающих демонов. С ifconfig Я видел, что петлевое устройство на самом деле работает. Я попытался привязать mysqld к другому порту (3307), но получил ту же ошибку (но для 3307).

Я попытался запустить mysqld от имени пользователя root. Я попытался запустить его, передав аргументы --user=_mysql.

Я не могу понять, что еще попробовать. Какие-либо предложения?

РЕДАКТИРОВАТЬ: @nambuls: netstat -n -p tcp | grep 3306 ничего не возвращает

EDIT2: журнал ошибок также показывает предупреждения - я не публиковал ранее, так как они были просто "предупреждениями", но это могло бы помочь.

090826 15:16:02 [Warning] Can't create test file /var/mysql/tanglewood.lower-test
090826 15:16:02 [Warning] Can't create test file /var/mysql/tanglewood.lower-test

Я не уверен, почему он не может создать тестовый файл - /var/mysql равен 775 для _mysql:admin, и я начал процесс как администратор.

3 ответа

Решение

Попробуйте добавить это в ваш файл my.cnf:

  [mysqld]
  bind-address      = 127.0.0.1

Обратите внимание, что это позволит только локальные подключения MySQL. Если вы используете свой веб-сервер на том же хосте, этот bind-адрес подойдет для вашей установки.

Если 127.0.0.1 работает, вы можете попробовать системный IP-адрес. bind-адрес обычно не требуется.

Ладно - нашел проблему. Файл конфигурации mysql (/etc/my.cnf) был настроен на привязку IP-адреса, отличного от того, который в данный момент назначен сетевому устройству. Я изменил его, чтобы привязать текущий адрес, и снова заработал. Подсказка заключалась в том, что он не мог связать 3306, хотя я нигде не мог найти его, используя его.

Вы проверили вывод netstat?

netstat -n -p tcp | grep 3306

чтобы увидеть, есть ли программа, которая уже прослушивает порт mysql?

Если он ничего не возвращает, то порт не используется.

Другие вопросы по тегам