mysql 5.6 ログローテーションと/root/.my.cnf

下記のような/etc/logrotate.d/mysqlのpostrotateを正常に動作させるには、mysqlのrootユーザのパスワードが必要。

# The log file name and location can be set in
# /etc/my.cnf by setting the "log-error" option
# in either [mysqld] or [mysqld_safe] section as
# follows:
#
# [mysqld]
# log-error=/var/lib/mysql/mysqld.log
#
# In case the root user has a password, then you
# have to create a /root/.my.cnf configuration file
# with the following content:
#
# [mysqladmin]
# password =  
# user= root
#
# where "" is the password. 
#
# ATTENTION: The /root/.my.cnf file should be readable
# _ONLY_ by root !

/var/log/mysql/mysqld.log {
        # create 600 mysql mysql
        notifempty
        missingok
#        compress
    postrotate
    # just if mysqld is really running
    if test -x /usr/bin/mysqladmin && \
       /usr/bin/mysqladmin ping &>/dev/null
    then
       /usr/bin/mysqladmin flush-logs
    fi
    endscript
}

mysqlのrootユーザにパスワードが設定されていると、このままでは mysqladmin ping が正常に動作しない。

この問題を解決するために、上記スクリプトのコメントに記載されているとおり、/root/.my.cnf にパスワードを記述しておく。

# vim /root/.my.cnf
[mysqladmin]
password = パスワード
user= root

ここで大切なのは、OSユーザroot以外が参照できないようにすること。

# chmod 600 /root/.my.cnf  ←重要!

★ ここに記載の情報は、mysql 5.6で動作確認したものです。

Comments are closed.