In den letzten Wochen habe ich immer und immer wieder folgende Mail von meinem Server bekommen:
/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
Wie sich nun nach kurzer Recherche im Internet raus stellte, nutzt Ubuntu für seine allnächtlichen Logrotate’s auch einen mySQL User, um in einer Systemdatenbank aufzuräumen.
Da Ubuntu hierfür natürlich nicht direkt den Root User nimmt, gibt es einen „unterprivilegierten“ User namens „debian-sys-maint“.
Wenn dieser nun, aus welchem Grund auch immer, nicht mehr existiert oder keine Rechte mehr hat, kommt es zu der oben beschriebenen Fehlermeldung.
Dieses Problem lässt sich aber sehr einfach beheben und zwar gehen wir wie folgt vor:
cat /etc/mysql/debian.cnf # Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = *************** socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = *************** socket = /var/run/mysqld/mysqld.sock basedir = /usr
Nun kopieren wir uns das Passwort, loggen uns in den mySQL ein und erstellen den User neu:
mysql -uroot -p --> Passwort für mySQL Root User Create user 'debian-sys-maint'@'localhost' identified by '***************';
Nun geben wir dem User noch Rechte auf die Datenbank und schon hat sich das Problem erledigt:
GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY PASSWORD '***************';
Und das wars auch schon, ich hoffe ich konnte damit dem ein oder anderen helfen 🙂
Wie bekomme ich raus, ob der notwendige User tatsächlich “debian-sys-maint” heißt? Den gab es bei mir wirklich noch nie (wieso?) und die Cron-Fehlermeldung ist die selbe – allerdings leider auch noch nach der Anwendung Deines Tips. Ich benutze ein recht frisches Ubuntu 11.04.
Welche Linux Distribution nutz du den?