У нас было веб-приложение, работающее на сервере OSX при поддержке mysql. На сервере установлено ядро Дарвина 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, и я начал процесс как администратор.
попробуйте добавить это в файл my.cnf:
[mysqld]
bind-address = 127.0.0.1
Обратите внимание, что это разрешит только локальные подключения mysql. Если вы используете свой веб-сервер на том же хосте, этот адрес привязки подойдет для вашей установки.
Если 127.0.0.1 работает, вы можете попробовать IP-адрес системы. bind-address обычно не требуется.
Ладно - нашел проблему. Файл конфигурации mysql (/etc/my.cnf) был настроен для привязки IP-адреса, отличного от того, который в настоящее время назначен сетевому устройству. Я изменил его, чтобы привязать текущий адрес, и он снова заработал. Намек заключался в том, что он не мог привязать 3306, хотя я нигде не мог найти его, используя его.
вы проверяли вывод netstat?
netstat -n -p tcp | grep 3306
чтобы узнать, есть ли программа, уже прослушивающая порт mysql?
Если он ничего не возвращает, значит, порт не используется.