DebianのMariaDBのエラー
Debianサーバーの処理が遅いなと感じて調べていたら、MariaDB(MySQL)のログ(/var/log/mysql/error.log)に次のようなエラーがでていました。
これがサーバーを遅くしている原因かどうかは不明ですが、とりあえずこれはこれで対応しないといけません。
エラーログには続けてmysql_upgradeを実行するようにとのメッセージも出ていました。
また、ネットでも、次のようなページが見つかりました。
MariaDB(MySQL)のアップグレード時にmysql_upgradeを実行しなかったり、失敗したりすると出る現象だそうです。先のサイトに書かれているように実行してみます。
- 念のためバックアップを取ります。
cp -a /var/lib/mysql/ /var/lib/mysql_bkup/
- mysql_upgradeを実行します
# mysql_upgrade -u root -p
# パスワード
... - MariaDB(MySQL)を再起動します
# systemctl restart mysql
- エラーが出てないことを確認します
# cat /var/log/mysql/error.log
ワーニング
ワーニングの方もいくつか出ていたので対応します。
これはDNSに逆引きしにいってクライアントが存在するか(不正でないか)をチェックした結果、クライアントが見つけられない為出力されています。
これを解決するには/etc/mysql/mariadb.conf.d/50-server.cnf(MariaDB)または、my.ini(MySQL)の[mysqld]の項目に次の値をセットすることで回避できます。
skip-name-resolve
この設定で注意しないといけないのは、こちらのページにも書かれているように、名前解決をしなくなることにより認証エラーが起きることがあるという事です。
ちなみに、パスワードを設定した際、コンソールの履歴にそれが残るのはセキュリティ的に問題です。mysql_adminを使った場合(bash)は「history -c」コマンドを実行をすることで、MariaDB(MySQL)コンソールで処理した場合は、コンソールを起動させたユーザーのhomeディレクトリの.mysql_historyファイルを削除することで、履歴を削除することができます。
さらに、別のワーニングも出ていいました。
システムがrootでMariaDBにアクセスしようとしているけれど、パスワードなしではアクセスできないという感じのエラーのようです。
/etc/mysql/debian.cnfの[client]と[mysql_upgrade]のpasswordの箇所に現在指定してあるrootのパスワードを記入してやることでエラーが出なくなりました。編集しないようにとファイルには記載されていますが……。
IPv6で待機している?
ワーニングも消えましたがもう一つ気になるログがありました。
アドレスのフォーマットがIPv6なのでIPv6で待機しているようです。IPv6では接続しないのでそれを止めます。先の50-server.cnf(またはmy.ini)にある次のエントリーを設定します。
これで再起動してい見るとログが次のようになってIPv4のみの待機に変わりました。
ちなみにbind-address接続先のIPアドレスを制限するエントリーです。「0.0.0.0」はIPv4のアドレスすべてを意味します。また、「*」とするとIPv4、6のすべてのアドレスに接続を許可します。
これらの設定で、Debianサーバのレスポンスが少し改善した気がします。