UBUNTU16を再インストールしてすべてクリーンになったと思ったら、前のUBUNTU12から続いていたエラーメールがまた来続けていた。
すべてをやり直せたと思っていたのに。
/etc/cron.daily/logrotate:
error: error running shared postrotate script for '/var/log/mysql.log /var/log/mysql/*log '
run-parts: /etc/cron.daily/logrotate exited with return code 1
そこでこのエラーを解消しようと検索してみると、様々な解説があった。
mysqlのパスワードが古いからold_Passwordを更新するといい、とか、それは邪道だとか。
どれを試してもだめだった。
おそらく環境に依存するのだろう。
ただ、状況としては、Logrotateが巡回するときに、パーミッションだかの関係でlogにアクセスできない、というようなことらしいことはわかってきた。
自分の場合は以下のファイルに、
vi /etc/logrotate.d/mysql-server
この1行を付け加えるとエラーが解消した。
su root root
ただ、このファイル「mysql-server」には以下のような記述のされ方がされていて、ほかで言われているような一番最後の行に差し込むのではうまく動いてくれない。
場所が肝だった。
/var/log/mysql.log /var/log/mysql/*log {
daily
rotate 7
missingok
create 640 mysql adm
compress
sharedscripts
su root root ここに書く
postrotate
test -x /usr/bin/mysqladmin || exit 0
# If this fails, check debian.conf!
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
# Really no mysqld or rather a missing debian-sys-maint user?
# If this occurs and is not a error please report a bug.
#if ps cax | grep -q mysqld; then
if killall -q -s0 -umysql mysqld; then
exit 1
fi
else
$MYADMIN flush-logs
fi
endscript
※ここに最初は差し込んでいて、動かなかった。
}
で、ついでなんだけれど、このファイルに
# If this fails, check debian.conf!
と書かれているのだけれど、原因はこれじゃないようだ。
また、確認はしても、/etc/mysql/debian.cnfを直接いじっちゃだめらしい。
ほかの人たちは、他の方法で解決しているみたい。試してみてね。
https://www.downtown.jp/~soukaku/archives/2011/0718_212533.html
https://www.mk-mode.com/octopress/2015/04/27/mariadb-mysql-error-on-logrotation/
http://blog.inouetakuya.info/entry/20130320/1363776504
http://www.white-room.jp/blog/?p=769