MySQLサーバのインストール、設定

データベースサーバとして、MySQLサーバをインストールする。

インストール

dnf install mysql-server

起動、自動起動設定

systemctl start mysqld
systemctl enable mysqld

初期設定

起動ログを確認してみる。

cat /var/log/mysql/mysqld.log

以下のメッセージが表示されている。

2020-03-07T10:05:23.900623Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

空のパスワードでrootユーザが作成されている。

このままではもちろんセキュリティ的に良くないので、セキュリティ設定を行っておく。

mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:

バスワードチェックのセットアップを行うか?と聞かれるので、yを入力。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

パスワードポリシーを3種類から選択できる。

STRONG(英数字記号混在、辞書にある単語を含まない)を選択するので、2を入力。

Please set the password for root here.

New password: 

Re-enter new password:

パスワードを2回入力する。

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

このパスワードで良いか?と聞かれるので、yを入力。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) :

匿名ユーザを削除するか?と聞かれるので、yを入力。

Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

リモートからのrootログインを受け入れないようにするか?と聞かれるので、yを入力。

Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

テスト用データベースを削除するか?と聞かれるので、yを入力。

 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

全ての変更を有効にするために、権限テーブルをリロードするか?と聞かれるので、yを入力。

Success.

All done!

これでこの設定は完了した。

MySQLにログインするためには、以下のコマンドを使用する。

mysql -u root -p

パスワードを聞かれるので、先ほど設定したパスワードを入力すればよい。

MySQLにはバイナリログというものがあり、データ変更の記録がバイナリ情報で記録される。万が一のときにはバイナリログからデータを復元できる内容になっている。

バイナリログの肥大化を防ぐため、binlog_expire_logs_secondsの設定を行う。なお、以前はexpire_logs_daysが使われていたが、非推奨になった。

binlog_expire_logs_secondsには秒数で設定する。7日間とする場合、60 * 60 * 24 * 7 = 604800 で設定する。

vi /etc/my.cnf.d/mysql-server.cnf

[mysqld]
binlog_expire_logs_seconds=604800
binlog_expire_logs_secondsの現在の値は、MySQLにログインした状態で、以下で確認できる。

mysql> SHOW GLOBAL VARIABLES like 'binlog_expire_logs_seconds';
+----------------------------+---------+
| Variable_name              | Value   |
+----------------------------+---------+
| binlog_expire_logs_seconds | 2592000 |
+----------------------------+---------+
1 row in set (0.01 sec)

設定したら、サービスを再起動する。

systemctl restart mysqld
%d人のブロガーが「いいね」をつけました。