error: error running shared postrotate script for /var/log/mysql.log

Diesen Beitrag schrieb ich 14 Jahre und 3 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

Nach Aufsetzen eines mySQL-Servers unter Debian bekam ich einige Nächte in Folge diese Mail:

Subject: 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

Das Problem liegt darin begründet, dass es den benötigten User nicht gibt. Informationen zu diesem User sind in /etc/mysql/debian.cnf zu finden; bei mir sieht das etwa so aus:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = <$PASSWORT>
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user     = debian-sys-maint
password = <$PASSWORT>
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Den hier genannten User debian-sys-maint brauchen wir – innerhalb MySQL. Das geht aber ganz schnell und unkompliziert; <$PASSWORT> entspricht natürlich dem String, der an dieser Stelle bei euch steht:

$ mysql -u root -p
Enter password:

mysql> create user 'debian-sys-maint'@'localhost'
  -> identified by '<$PASSWORT>';

Aber der nun erstellte User braucht aber auch Rechte auf die Datenbanken; wer das fein aufteilen möchte, kann dies gerne tun ;) Ich habe folgendermaßen beholfen.

mysql> grant all privileges on \*.\*
  -> to 'debian-sys-maint'@'localhost'
  -> identified by '<$PASSWORT>';

Anschließend nicht vergessen:

mysql> flush privileges;