Ошибка: error running shared postrotate script for '/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log '

»»»

Ошибка: error running shared postrotate script for '/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log '

После переустановки и настройки системы на почту стали приходить сообщения:

Cron test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

/etc/cron.daily/logrotate: error: error running shared postrotate script for '/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log ' run-parts: /etc/cron.daily/logrotate exited with return code 1

 

Решение следующее:В Debian, управление процессом mysql производится через системного пользователя 'debian-sys-maint'@'localhost'. Пароль для пользователя хранится в /etc/mysql/debian.cnf.

# cat /etc/mysql/debian.cnf

или

# grep -m 1 password /etc/mysql/debian.cnf | cut -d" " -f3

Следует помнить, что пароль в данном файле нельзя просто поменять - полуичте не работающий MySQL.Получив пароль из данного файла, необходимо выполнить следующие команды в mysql от имени пользователя root или другого с правами суперпользователя.

mysql -u root -p

В консоли mysql>, вводим следующее:

GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'XXXXXXXXXXXX';

Вместо 'XXXXXXXXXXX' необходимо указать полученный пароль. Возможен вариант, когда пользователь 'debian-sys-maint' отсутствует в таблице mysql.user. В этом случае его нужно предварительно создать:

# mysql -u root -p
Enter password: 

mysql> use mysql;
mysql> update user set password=PASSWORD("XXXXXXXXXXXXX") where user='debian-sys-maint';
mysql> flush privileges;
mysql> exit

Здесь стоит обратить внимание, что у MySQL с версии 5.6 изменилась структура системной таблицы 'mysql.user'. Поле 'password' теперь называется 'authentication_string'. Соответственно нужно изменить запрос:

mysql> update user set authentication_string=PASSWORD("XXXXXXXXXXXXX") where user='debian-sys-maint';
mysql> flush privileges;

После чего перезапустить logrotate

# logrotate -f /etc/logrotate.conf
Рейтинг

В этом разделе