error: error running shared postrotate script for /var/log/mysql.log
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;
6 Kommentare
Von: tam
2011-09-28 10:04:09 +0200
Danke!
Von: rainer
2011-10-05 13:49:35 +0200
bei grant all privileges fehlt das ' nach dem passwort :)
ansonsten sehr gut beschrieben wie das problem zu lösen ist -> vor allem interessant wenn man die datenbank auf einem neuen server einspielt wird das gerne mal vergessen
Von: Steffen
2012-07-11 11:10:41 +0200
Das hat geholfen. Danke!
Von: Rolf
2012-12-13 14:25:55 +0100
Nochmal danke, schon das zweite Mal gegoogled und das zweite Mal geholfen :)
Von: Reiner
2014-05-23 14:44:22 +0200
Hi,
der Hinweis ist sehr hilfreich und glücklicherweise auch auf Platz 1 bei Google ;)
Kleiner Tipp... man kann sich die Sache vereinfachen. Es reicht vollkommen aus:
mysql> GRANT ALL PRIVILEGES ON *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'PASSWORD';
Query OK, 0 rows affected (0.15 sec)
ohne vorheriges CREATE oder nachträglichem FLUSH ;)
mysql> SHOW GRANTS FOR `debian-sys-maint`@`localhost`;
+-----------------------------------------------------------------+
| Grants for debian-sys-maint@localhost |
+-----------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY PASSWORD '*B68A8C89143D9AadfEDC28DEasdfC971B0DAA12B3' |
+-----------------------------------------------------------------+
1 row in set (0.00 sec)
Von: Emin
2017-05-29 11:19:08 +0200
Auch nach 10 Jahren scheint es noch zu helfen.
In meinem Fall wurde bei der Installation von MariaDB kein root-Passwort gesetzt, welches ich aber anschließend per Hand getan hatte. Nun hat Ubuntu versucht sich genau in der debian.cnf mit root ohne Passwort einzuloggen, welches natürlich fehlschlug.
Nachdem ich diesen sehr hilfreichen Artikel gelesen habe, habe ich mir einen neuen Benutzer angelegt und ihm alle Rechte gegeben. Diesen habe ich anschließend in die debian.cnf eingetragen. Das wars. Es hat super funktioniert.
Vielen Dank nochmal.
Hinterlasse einen Kommentar
Ich freue mich über jeden Kommentar, es sei denn, er ist blöd.
Deshalb sind die Kommentare auf dieser Seite auch generell moderiert.