web-dev-qa-db-ja.com

MySQL logrotateエラー

私はLinuxが初めてで、データベースにmariadbを使用して、postfix、dovecot、およびrouncubeでUbuntu 16.04を実行するVPSをセットアップしました。すべて正常に動作しているようですが、定期的に次のメールを受信します。

/etc/cron.daily/logrotate:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
error: error running shared postrotate script for '/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1

私はいくつかの検索を実行し、サーバーなどを再起動してから/root/.my.cnfファイルを作成する必要があることを示唆する投稿を見つけましたが、まだエラーを受け取っています。 my /root/.my.cnfの内容は次のとおりです。

[mysqladmin]
password = *mypassword*
user = root

[mysql]
password = *mypassword*

Mysqlのパスワードを使用するためにこれを取得するために設定しなければならないものがあるかどうか、誰かが私に足りないものがあるかどうかを知っていますか?

ありがとう

4
Adam D

これは、mysqlからmariadbに移行するときに自分に似た何かにぶつかったことを漠然と覚えているので、まだ打ち切られていないmysqlに対して、mariadbを使用する場合の「ストック」構成のバグかもしれません。

/etc/logrotate.d/mysql-serverを調べて、postrotateで実行されているものを確認します。次のようなものになるでしょう。

test -x /usr/bin/mysqladmin || exit 0
if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then
    # If this fails, check debian.conf!
    mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs
fi

Ubuntuはおそらくそこを探しているので、/etc/mysql/debian.cnfを見て、何が設定されているかを確認してください。

5
AvatarKava

AvatarKavaは私たちに正しい方向を指し示し、彼の答えはほとんどの人に役立つでしょう。 /etc/mysql/debian.cnfファイルにユーザーとパスワードを追加した後も頭を悩ましている場合(このファイルには触れないでください!):

パスワードを引用符で囲んでください

特にパスワードに特殊文字が含まれる場合。

別のハックは、--defaults-file=/etc/mysql/debian.cnfのmysqladminコマンドから/etc/logrotate.d/mysql-serverオプションを削除することです。このオプションを削除しても、rootユーザー(logrotateを実行するユーザー)は、mysqlに接続するために有効なユーザーとパスワードを必要とするため、/ rootに適切な.my.cnfファイルがあることを確認してください。どちらの場合でも、debian.cnfまたはmysql-serverへの変更は次のMariaDBアップグレード中に上書きされる可能性がありますが、AvatarKavaが指摘しているように、アップグレードがこれらのファイルを上書きする前にプロンプ​​トが表示されます。最悪の場合、アップグレード後に再びlogrotateエラーが発生し始め、同じ変更を再度行う必要があります。

1
mcmacerson