Не удалось запустить 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?
Если он ничего не возвращает, то порт не используется.