ОС Федора 9вчера обновил систему yum upgrade, после чего MySQL перестал запускаться.
Все права перепроверял, все нормально. Когда в my.conf указываю user=root, то запускается нормально.запускаю мускул:
[13:41][root@xxx:/var/run]# /etc/init.d/mysqld start
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL: [FAILED]
[13:42][root@xxx:/var/run]#в логах появилось вижу вот это:
081116 13:53:03 mysqld started
InnoDB: Log scan progressed past the checkpoint lsn 0 36808
081116 13:53:03 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 0 43655
081116 13:53:03 InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
081116 13:53:03 InnoDB: Started; log sequence number 0 43655
081116 13:53:03 [ERROR] /usr/libexec/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 13)
081116 13:53:03 [ERROR] Can't start server: can't create PID file: Permission denied
081116 13:53:03 mysqld ended
права на папку /var/run/mysqld:[14:00][root@xxx:/var/run]# ls -l
...
drwxrwxrwx 2 mysql mysql 4096 2008-03-04 05:39 mysqld
...my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
SELINUX отключен.второй день ковыряю эту проблему, не знаю куда дальше смотреть...
Не, а что тут два дня ковырять, когда все в тексте ошибки написано?>081116 13:53:03 [ERROR] /usr/libexec/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 13)
>081116 13:53:03 [ERROR] Can't start server: can't create PID file: Permission deniedЕсли юзер mysql, которого поминают в конфиге,
>my.cnf:
>
>[mysqld]
>user=mysqlна самом деле существует в системе, то на каталог для pid файла надо дать права
chown mysql /var/run/mysqld
chmod 755 /var/run/mysqld
>[оверквотинг удален]
>>my.cnf:
>>
>>[mysqld]
>>user=mysql
>
>на самом деле существует в системе, то на каталог для pid файла
>надо дать права
>
>chown mysql /var/run/mysqld
>chmod 755 /var/run/mysqldюзер такой есть, и права там поставил 755
Попробуйте удалить /var/run/mysqld/mysqld.pid или поменять ему владельца. Для создания/удаления файла важны права на каталог, а вот для изменения важны права на сам файл.
>>chown mysql /var/run/mysqld
>>chmod 755 /var/run/mysqld
>
>юзер такой есть, и права там поставил 755Ну, а владельца сменить? А старый пид-файл стереть?
Ничего не помогает? В церкви когда был в последний раз? :)
В церковь ходил давно... если не получится сделать до выходных, то на выходных и пойду...Под рутом запустил все нормально, пидфайл создался:
[22:55][root@ххх:/var/run/mysqld]# /etc/init.d/mysqld start
Starting MySQL: [ OK ]
[22:55][root@ххх:/var/run/mysqld]# ls -l
total 4
-rw-rw---- 1 root root 6 2008-11-19 22:55 mysqld.pid
[22:55][root@ххх:/var/run/mysqld]#Теперь останавливаю:
[22:55][root@ххх:/var/run/mysqld]# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
[22:57][root@xxx:/var/run/mysqld]# ls -l
total 0
[22:57][root@ххх:/var/run/mysqld]#
в логах при этом появилось вот это:081119 22:55:15 mysqld started
081119 22:55:15 InnoDB: Started; log sequence number 0 43655
081119 22:55:15 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.51a-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
081119 22:56:56 [Note] /usr/libexec/mysqld: Normal shutdown
081119 22:56:58 InnoDB: Starting shutdown...
081119 22:56:59 InnoDB: Shutdown completed; log sequence number 0 43655
081119 22:56:59 [Note] /usr/libexec/mysqld: Shutdown complete
081119 22:56:59 mysqld endedВ my.cnf меняю пользователя на mysql, снова запускаю, не работает. Пидфайла нету.
права на папку /usr/libexec/mysqld поставил 777
не знаю даже что и делать уже... не хотит стартовать и хоть ты тресни... и другого пользователя создал, тоже е запускается, пишет:
081120 00:31:40 mysqld started
081120 0:31:40 InnoDB: Started; log sequence number 0 43655
081120 0:31:40 [ERROR] Can't start server : Bind on unix socket: Permission denied
081120 0:31:40 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
081120 0:31:40 [ERROR] Aborting081120 0:31:40 InnoDB: Starting shutdown...
081120 0:31:43 InnoDB: Shutdown completed; log sequence number 0 43655
081120 0:31:43 [Note] /usr/libexec/mysqld: Shutdown complete081120 00:31:43 mysqld ended
этого пользователя добавил во владельци на нужные папки
Вы заметили что теперь оно ругается на файл сокета, а не пид? И что он находится в совсем другом каталоге? И зачем вы меняете права на /usr/libexec/mysqld?Остановите мускул. Сделайте chown -Rh mysql на все его рабочие каталоги(узнать их можно из конфига и дефолтов). Поставьте пользователя mysql в конфиге. Запустите мускул.
с юзером mysql pid не хочет создавать никак...
Создал юзера mysql-user выполнил команды:[10:32][root@ххх:~]# chown -Rh mysql-user /var/lib/mysql
[10:33][root@ххх:~]# chown -Rh mysql-user /var/log/mysql.log
[10:34][root@ххх:~]# chown -Rh mysql-user /var/log/mysqld.log
[10:34][root@ххх:~]# chown -Rh mysql-user /var/run/mysqld/
[10:42][root@ххх:~]# cd /var/lib/mysql/
[10:43][root@ххх:/var/lib/mysql]# chown -Rh mysql-user *
в файле my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql-user
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
log=/var/log/mysql.log[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
В логах вот это:081120 10:48:53 mysqld started
081120 10:48:53 InnoDB: Started; log sequence number 0 43655
081120 10:48:53 [ERROR] Can't start server : Bind on unix socket: Permission denied
081120 10:48:53 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
081120 10:48:53 [ERROR] Aborting081120 10:48:53 InnoDB: Starting shutdown...
081120 10:48:56 InnoDB: Shutdown completed; log sequence number 0 43655
081120 10:48:56 [Note] /usr/libexec/mysqld: Shutdown complete081120 10:48:56 mysqld ended
может ещё на какую папку права поменять надо?
>[оверквотинг удален]
>081120 10:48:53 [ERROR] Aborting
>
>081120 10:48:53 InnoDB: Starting shutdown...
>081120 10:48:56 InnoDB: Shutdown completed; log sequence number 0 43655
>081120 10:48:56 [Note] /usr/libexec/mysqld: Shutdown complete
>
>081120 10:48:56 mysqld ended
>
>
>может ещё на какую папку права поменять надо?Еще раз...
Надо остановить сервер mysql, убедиться, что он остановился и другой в это время не запущен:
ps ax|grep sql
Если другой сервер есть, а быть не должен, либо если нужный сервер не останавливается, то разбирайся со своими стартовыми скриптами.Далее по плану:
1.
Хватит дергать юзеров! Не запускать mysqld рутом. Не менять в конфиге строку "user=mysql-user". Создал себе "mysql-user" - с ним и работай.2.
Сделать бэкап данных базы.3.
Определиться с каталогами, прописать их в конфиг.
###########
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql-user
old_passwords=1
log=/var/log/mysql/mysql.log[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
###########4.
Создать недостающий каталог для логов
mkdir /var/log/mysqlРаздать права на каталоги
chown -Rh mysql-user /var/lib/mysql
chown -Rh mysql-user /var/log/mysql
chown -Rh mysql-user /var/run/mysqld5.
Удалить старый пид и сокет если есть
rm /var/run/mysqld/mysqld.pid
rm /var/lib/mysql/mysql.sock6.
Запустить мускул и читать логи в /var/log/mysql/
мускул работает под рутом
[00:47][root@ххх ps ax|grep sql
19160 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
19222 pts/0 Sl 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=root --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sockостанавливаю сервер:
[00:48][root@ххх]# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
[00:48][root@ххх]# ps ax|grep sql
19285 pts/0 S+ 0:00 grep sql1. поменял в my.cnf --> user=mysql-user
2. Дамп создан уже.
3. есть
4. есть
5.[01:46][root@ххх:/usr/mysqldunp/all]# rm /var/run/mysqld/mysqld.pid
rm: cannot remove `/var/run/mysqld/mysqld.pid': No such file or directory
[01:46][root@ххх:/usr/mysqldunp/all]# rm /var/lib/mysql/mysql.sock
rm: cannot remove `/var/lib/mysql/mysql.sock': No such file or directory
готово.6.
Запускаем и читаем tail -f /var/log/mysql/mysqld.log
081121 01:55:41 mysqld started
081121 1:55:41 InnoDB: Started; log sequence number 0 43655
081121 1:55:41 [ERROR] Can't start server : Bind on unix socket: Permission denied
081121 1:55:41 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
081121 1:55:41 [ERROR] Aborting081121 1:55:41 InnoDB: Starting shutdown...
081121 1:55:43 InnoDB: Shutdown completed; log sequence number 0 43655
081121 1:55:43 [Note] /usr/libexec/mysqld: Shutdown complete081121 01:55:43 mysqld ended
[01:57][root@ххх:/var/log/mysql]# ps ax|grep sql
20092 pts/1 S+ 0:00 mcedit sql-dump.sql
20275 pts/2 S+ 0:00 tail -f /var/log/mysql/mysqld.log
20392 pts/4 S+ 0:00 tail -f /var/log/mysql.log
Так, хорошо, давай тогда избавимся от стартовых скриптов и укажем серверу все параметры руками...Я так понимаю, что серверный бинарник это /usr/sbin/mysqld.
Запусти /usr/sbin/mysqld -V чтобы убедиться, что это нужная версия mysql сервера, с которой ты будешь работать. Его и будем запускать.1.
Сначала останови mysql, а потом командой ps ax|grep sql убедись, что он остановился. Не наоборот :)))2.
В конфиге закомментируй строки
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
Не нужны они пока.3.
Еще раз раздай права на каталоги на всякий случай. Я полагаю, что, создвая юзера mysql-user, ты создал и родную группу для него с именем mysql-user:
chown -R mysql-user:mysql-user /var/lib/mysql
chown -R mysql-user:mysql-user /var/log/mysql
chown -R mysql-user:mysql-user /var/run/mysqld4.
Удали старый пид и сокет, если есть
rm /var/run/mysqld/mysqld.pid
rm /var/lib/mysql/mysql.sock5.
Пробуй запустить от !!рута!!
/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql-user --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sockСмотри что получится... Логов не будет, все выпадет на экран
6. Если опять не получится, то покажи
ls -lah /var/lib/mysql
ls -lah /var/log/mysql
ls -lah /var/run/mysqld
Смотрим версию:
[12:40][root@ххх:/]# /usr/libexec/mysqld -V
/usr/libexec/mysqld Ver 5.0.51a-log for redhat-linux-gnu on x86_64 (Source distribution)1.
[12:40][root@ххх:/]# /etc/init.d/mysqld stop
Stopping MySQL: [ OK ]
[12:42][root@ххх:/]# ps ax|grep sql
9924 pts/0 S+ 0:00 grep sql
[12:43][root@ххх:/]#2.
Закоментировал:
[mysqld].
#datadir=/var/lib/mysql.
#socket=/var/lib/mysql/mysql.sock.
user=mysql-user
old_passwords=1.
log=/var/log/mysql/mysql.log.[mysqld_safe].
log-error=/var/log/mysql/mysqld.log.
pid-file=/var/run/mysqld/mysqld.pid3. Група mysql-user есть. Команды выполнил.
4. Пид и сокета небыло.
5. Запускаю:[12:50][root@ххх:/]# /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql-user --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
081121 12:51:04 InnoDB: Started; log sequence number 0 43655
081121 12:51:04 [ERROR] /usr/libexec/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 13)
081121 12:51:04 [ERROR] Can't start server: can't create PID file: Permission denied6.
[12:52][root@ххх:/]# ls -lah /var/lib/mysql
total 21M
drwxr-xr-x 7 mysql-user mysql-user 4.0K 2008-11-21 12:51 .
drwxr-xr-x 40 root root 4.0K 2008-11-16 13:22 ..
-rw-rw---- 1 mysql-user mysql-user 10M 2008-11-21 12:42 ibdata1
-rw-rw---- 1 mysql-user mysql-user 5.0M 2008-11-21 12:51 ib_logfile0
-rw-rw---- 1 mysql-user mysql-user 5.0M 2008-11-16 13:24 ib_logfile1
drwx------ 2 mysql-user mysql-user 12K 2008-11-18 00:47 joomla
drwx------ 2 mysql-user mysql-user 4.0K 2008-11-16 13:24 mysql
srwxrwxrwx 1 mysql-user mysql-user 0 2008-11-21 12:51 mysql.sock
drwx------ 2 mysql-user mysql-user 4.0K 2008-11-16 13:24 test[12:53][root@ххх:/]# ls -lah /var/log/mysql
total 1016K
drwxr-xr-x 2 mysql-user mysql-user 4.0K 2008-11-21 01:51 .
drwxr-xr-x 19 root root 4.0K 2008-11-21 04:08 ..
-rw-r----- 1 mysql-user mysql-user 1.1K 2008-11-21 12:42 mysqld.log
-rwxrwxrwx 1 mysql-user mysql-user 999K 2008-11-21 12:51 mysql.log[12:54][root@ххх:/]# ls -lah /var/run/mysqld
total 8.0K
drwxrwxrwx 2 mysql-user mysql-user 4.0K 2008-11-21 12:42 .
drwxrwx--- 28 root root 4.0K 2008-11-21 12:12 ..
Тоесть бинарника /usr/sbin/mysqld нету, он есть как /usr/libexec/mysqld ? Ладно...Попробуй стереть сокет и пид если они есть, а потом запустить снова. Только убери из командной строки "--basedir=/usr". Или сделай "--basedir=/".
Если опять не получится, то попробуй переставить чтоль... Потом в церковь...
[19:48][root@xxx:/]# /usr/libexec/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql-user --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock081121 19:48:33 [ERROR] Can't find messagefile '/share/mysql/english/errmsg.sys'
081121 19:48:33 [ERROR] Aborting[19:57][root@xxx:/]# /usr/libexec/mysqld --datadir=/var/lib/mysql --user=mysql-user --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
081121 19:57:11 InnoDB: Started; log sequence number 0 43655
081121 19:57:11 [ERROR] Can't start server : Bind on unix socket: Permission denied
081121 19:57:11 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
081121 19:57:11 [ERROR] Aborting081121 19:57:11 InnoDB: Starting shutdown...
081121 19:57:14 InnoDB: Shutdown completed; log sequence number 0 43655
081121 19:57:14 [Note] /usr/libexec/mysqld: Shutdown completeкороче, после обновления системы пришел пипец ))
Переустанавливать мускул я пробовал, без результата. Попробую переустановить ещё разок, но через yum install а из исходиков
Разобрался!
Видать когда обновлял систему, изменились права на директорию /var/run, права на неё были 770, я поставил 761 как было по дефолту (посмотрел на другом серваке), и поднялось!! Спасибо всем, кто откликнулся на мою проблему!! Ровно неделю мучился, а решение было таким простым!! ))
>Разобрался!
>Видать когда обновлял систему, изменились права на директорию /var/run, права на неё
>были 770, я поставил 761 как было по дефолту (посмотрел на
>другом серваке), и поднялось!! Спасибо всем, кто откликнулся на мою проблему!!
>Ровно неделю мучился, а решение было таким простым!! ))Аднака...
А какие же были владелец\группа у /var/run при разрешениях 770?? Что этим хотел добиться обновлятор? Вообще туда права 755 или что-то такое, не замороченное.
>Аднака...
>А какие же были владелец\группа у /var/run при разрешениях 770?? Что этим
>хотел добиться обновлятор? Вообще туда права 755 или что-то такое, не
>замороченное.владельцем был рут
drwxrwxrwx 27 root root 4096 2008-11-25 11:23 run
вот сейчас я поставил и все нормально, но надо еще оттестить, буду сегодня пересматривать.
может всетаки, с обновлением системы установился какойнить пакет, типа селинукс?