После переустановки и настройки системы на почту стали приходить сообщения:
Cron
/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