犬ターネット

MySQL のログに CA 関連と NO_ZERO_DATE 関連の Warning が出ていたので対応した

2017-12-21 mysql

/var/log/mysqld.log を見ていたら以下の Warning が結構出ていたので対応した。

[Warning] CA certificate ca.pem is self signed.
[Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.

まずは CA 関連を対応するため証明書を作成(自分の環境では既に作成されていた)。

$ cd /var/lib/mysql
$ mysql_ssl_rsa_setup
$ chown mysql:mysql *.pem

/etc/my.cnf に証明書設定を追加。

# ssl設定
ssl-ca=/var/lib/mysql/ca-key.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem

MySQL再起動。

$ service mysqld restart

有効になっているか確認。ssl関連が YES になっているからOK。ログにもWarningは出ていないことを確認した。

$ mysql -u root -p
> show variables like '%ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl  | YES   |
| have_ssl      | YES   |
+---------------+-------+

'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' も対応。/etc/my.cnf の sql_mode に以下を追加。

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZEROM

MySQL再起動。ログにWarningが出ていないことを確認した。

$ service mysqld restart

NO_ZERO_DATE, NO_ZERO_IN_DATE、ERROR_FOR_DIVISION_BY_ZERO については↓詳しい説明があるので読んでおく。

MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モード

台北旅行
歪み系エフェクターを複数つなぐ場合の順序