mysql мертв, но subsys заблокирован

я использую PHP-mysql на Linux (RHEL 5.0) В Первый Раз
Когда я попытался подключиться к MySQL из моего PHP-скрипта, используя mysqli_connect.
Он Отобразил Следующую Ошибку:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock'(2)

после googling в течение часа я нашел решение этого, как указано здесь.

когда я последовал этому подходу и выдал команду:

service mysqld status

как пользователь root Я получил:mysql is dead but subsys locked любой один знает как решить эту проблему и причину этой ошибки ?

и

  • перезагрузка
  • начиная с
  • и остановка MySQL
выдает вывод как: ошибка
но PHP работает нормально. Я протестировал phpinfo(); для демо.
Я установил MySQL в /usr/local/mysql/bin. Кто-нибудь может мне помочь ? Любая помощь приветствуется.


Спасибо заранее.

8 ответов


у меня была эта проблема с моим сервером OTRS после того, как я попытался обновить большой пакет.

решение:

копировать для safty:

cp /var/lock/subsys/mysqld /root/mysqld

чем удалить

rm /var/lock/subsys/mysqld

чем закрыть все службы, которые зависят от mysql:

service httpd stop
service otrs stop

после этого:

service mysqld restart
service httpd restart
service otrs restart

service mysqld restart

просто перезапуск mysqld работал для меня на Centos.


  1. tail/var/log / mysqld.log для проверки журнала ошибок
  2. затем выполните следующие действия:

    rm /var/lock/subsys/mysqld chown -R mysql.mysql /var/run/mysqld


во-первых,убедитесь, что /etc/init.d / mysqld работает от / usr / local / mysql/bin затем убейте mysqld, удалите файл блокировки и перезапустите его.


этот (и всякие другие странные ошибки) также может произойти, если у вас есть полный диск. В моем случае мой раздел /var был заполнен. Освобождение пространства позволило mysqld перезапустить снова.


Перезагрузка сервера сработала для меня. Не забудьте запустить все службы после перезагрузки, если вы не добавили "chkconfig" для них, скажем httpd, named и mysql.


Я использую команду kill, шаг за шагом:

  1. используйте статус командного сервиса mysqld для поиска PID mysqld
  2. убить -9 PID
  3. используйте статус mysqld службы команд снова для поиска PID mysqld
  4. убить -15 PID
  5. проверьте еще раз с командной службы mysqld статус, проверьте, пока PID не мертв или subsys заблокирован
  6. используйте командный сервис mysqld start

сначала найдите номер PID mysqld:

 1. Используйте top / grep mysqld
 2. kill -9 PID

Безопасный метод, отлично работает с Cent OS