пятница, 1 марта 2019 г.

Logrotate Error on Ubuntu

После переустановки и настройки системы на почту стали приходить сообщения:
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 authentication_string=PASSWORD("XXXXXXXXXXXXX") where user='debian-sys-maint';
mysql> flush privileges;
mysql> exit

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

отсюда