URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5977
[ Назад ]

Исходное сообщение
"упал mysql после up2date"

Отправлено Владимир , 11-Сен-08 17:26 
После обновления (Security Advisory - RHSA-2008:0768-9) упал MySQL. Операционка - Cent OS 4-й (аналог Red Hat). В логах следующее:

-----
080911 16:56:09  mysqld started
080911 16:56:10 [ERROR] Can't start server : Bind on unix socket: Permission denied
080911 16:56:10 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
080911 16:56:10 [ERROR] Aborting

080911 16:56:10 [Note] /usr/libexec/mysqld: Shutdown complete

080911 16:56:10  mysqld ended
-----

Никакого "другого" сервера не запущено, пользователь и группа mysql имеются, права на /var/lib/mysql имеют, но файла mysql.sock больше нет вообще, ни в указанной директории, ни в любой другой.

Кто сталкивался, подскажите как вернуть mysqld к жизни?


Содержание

Сообщения в этом обсуждении
"упал mysql после up2date"
Отправлено foo , 11-Сен-08 17:54 
>[оверквотинг удален]
>080911 16:56:10 [ERROR] Aborting
>
>080911 16:56:10 [Note] /usr/libexec/mysqld: Shutdown complete
>
>080911 16:56:10  mysqld ended
>-----
>
>Никакого "другого" сервера не запущено, пользователь и группа mysql имеются, права на
>/var/lib/mysql имеют, но файла mysql.sock больше нет вообще, ни в указанной
>директории, ни в любой другой.

SELinux юзается? Если да, то попробуйте его отключить и попробуйте без него.
Было похожее, после обновления правил SELinux.
>Кто сталкивался, подскажите как вернуть mysqld к жизни?


"упал mysql после up2date"
Отправлено Владимир , 11-Сен-08 18:17 
SE Linux на этом сервере отключен изначально. Перепроверил - сам он не включался.



"упал mysql после up2date"
Отправлено angra , 12-Сен-08 01:08 
Проверьте не стали ли запускаться мускул в чруте. На всякий случай покажите какие именно владелец и права на /var/lib/mysql

"упал mysql после up2date"
Отправлено Владимир , 12-Сен-08 10:05 
Насколько я понимаю сам по себе мускул в чруте не запустится, там относительно трудоемкий процесс. Но на всякий случай проверил: раньше он всегда стартовал автоматом, стандартным скриптом /etc/rc.d/init.d/mysqld, там никаких попыток выполнить chrootuid не появилось.

Вот права/владелец на /var/lib/mysql:
drwxr-xr-x   6 mysql     mysql    4096 Sep 11 18:16 mysql

Вот внутри директории:
-rw-rw----  1 mysql mysql 10485760 Sep  3 11:21 ibdata1
-rw-rw----  1 mysql mysql  5242880 Sep  3 11:21 ib_logfile0
-rw-rw----  1 mysql mysql  5242880 Oct 23  2007 ib_logfile1
drwx------  2 mysql mysql     4096 May 16 15:51 loger
drwx------  2 mysql mysql     4096 Oct 23  2007 mysql
drwx------  2 mysql mysql     4096 Sep  2 10:09 syslog
drwx------  2 mysql mysql     4096 Oct 23  2007 test


"упал mysql после up2date"
Отправлено angra , 12-Сен-08 10:39 
>Насколько я понимаю сам по себе мускул в чруте не запустится, там относительно трудоемкий процесс

Да. Вот только в некоторых дистрах(например в альте) стартовый скрипт помещает мускул в чрут, в других(например в дебиане) - нет. Соответственно я предполагал, что апдейт поменял способ запуска.

>Вот права/владелец на /var/lib/mysql:

Все верно. Надо изолировать проблему. Попробуйте сами создать в этом каталоге обыкновенный файл и юникс сокет используя пользователя mysql. Попробуйте запустить mysqld(или mysqld_safe) с указанием сокета в /tmp. Можно еще под strace запустить дабы увидеть какой именно вызов возвращает ошибку.


"упал mysql после up2date"
Отправлено Владимир , 12-Сен-08 12:40 
Попробовал:
-----
[root@logwatch mysql]# sudo -u mysql touch mysql.sock
sudo: unable to exec /bin/touch: Permission denied

[root@logwatch mysql]# sudo -u mysql cat > mysql.sock
sudo: unable to exec /bin/cat: Permission denied
-----
Система не дает пользователю mysql выполнять команды. Я не могу придумать как в таких условиях создать файл от имени пользователя mysql.
Еще один момент: я не разбираюсь в сокетах,- файл сокета это обычный файл или он должен создаваться какими-либо специальными средствами? Может вся проблема в том что я не знаю как его правильно создать?

Тем не менее второе предложение,- запустил с сокетом в /tmp, вот результат:
-----
[root@logwatch tmp]# mysql -S /tmp/mysql.sock
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

[root@logwatch tmp]# mysqld_safe -S /tmp/mysql.sock
Starting mysqld daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/run/mysqld/mysqld.pid
080912 11:52:31  mysqld ended
-----

Ну и наконец запустил под strace. Ругается на отсутствие файлов и директорий, к примеру так:
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/mysql/tls/i686/sse2/libncurses.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/mysql/tls/i686/sse2", 0xbfe7e780) = -1 ENOENT (No such file or directory)
И так далее, а ближе к концу:
connect(3, {sa_family=AF_FILE, path="/var/lib/mysql/mysql.sock"}, 110) = -1 ECONNREFUSED (Connection refused)