序章

MySQL はオープンソースのデータベース管理システムであり、一般的に人気のある LEMP (Linux、Nginx、MySQL / MariaDB、PHP / Python / Perl)スタックの一部としてインストールされます。 リレーショナルモデルおよび構造化クエリ言語(SQL)を実装して、データを管理およびクエリします。

このチュートリアルでは、CentOS8サーバーにMySQLバージョン8をインストールする方法について説明します。

前提条件

このチュートリアルを完了するには、CentOS8を実行しているサーバーが必要です。 このサーバーには、管理者権限を持つroot以外のユーザーと、firewalldで構成されたファイアウォールが必要です。 これを設定するには、CentOS8初期サーバーセットアップガイドを参照してください。

ステップ1—MySQLをインストールする

CentOS 8では、MySQLバージョン8はデフォルトのリポジトリから利用できます。

次のコマンドを実行して、mysql-serverパッケージとそのいくつかの依存関係をインストールします。

  1. sudo dnf install mysql-server

プロンプトが表示されたら、yを押してから、ENTERを押して、続行することを確認します。

Output
. . . Install 49 Packages Total download size: 46 M Installed size: 252 M Is this ok [y/N]: y

これで、MySQLはサーバーにインストールされますが、まだ動作していません。 インストールしたパッケージは、mysqld.serviceという名前のsystemdサービスとして実行するようにMySQLを構成します。 MySQLを使用するには、systemctlコマンドで開始する必要があります。

  1. sudo systemctl start mysqld.service

サービスが正しく実行されていることを確認するには、次のコマンドを実行します。 多くのsystemctlコマンド(startや、ここに示すようにstatusを含む)では、サービス名の後に.serviceを含める必要がないことに注意してください。

  1. sudo systemctl status mysqld

MySQLが正常に開始された場合、出力にはMySQLサービスがアクティブであることが示されます。

Output
● mysqld.service - MySQL 8.0 database server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-03-12 14:07:41 UTC; 1min 7s ago Main PID: 15723 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 5056) Memory: 474.2M CGroup: /system.slice/mysqld.service └─15723 /usr/libexec/mysqld --basedir=/usr Mar 12 14:07:32 cent-mysql-3 systemd[1]: Starting MySQL 8.0 database server... Mar 12 14:07:32 cent-mysql-3 mysql-prepare-db-dir[15639]: Initializing MySQL database Mar 12 14:07:41 cent-mysql-3 systemd[1]: Started MySQL 8.0 database server.

次に、サーバーが次のコマンドで起動するたびに起動するようにMySQLを設定します。

  1. sudo systemctl enable mysqld

注:この動作を変更して、MySQLの起動時の起動を無効にしたい場合は、次のコマンドを実行してください。

  1. sudo systemctl disable mysqld

これで、MySQLがサーバーにインストールされ、実行され、有効になります。 次に、MySQLインスタンスにプリインストールされているシェルスクリプトを使用してデータベースのセキュリティを強化する方法について説明します。

ステップ2—MySQLを保護する

MySQLには、MySQLのセキュリティを向上させるためにいくつかのデフォルト設定オプションを変更できるセキュリティスクリプトが含まれています。

セキュリティスクリプトを使用するには、次のコマンドを実行します。

  1. sudo mysql_secure_installation

これにより、MySQLインストールのセキュリティオプションに特定の変更を加えるかどうかを尋ねる一連のプロンプトが表示されます。 最初のプロンプトでは、パスワードの検証プラグインを設定するかどうかを尋ねられます。このプラグインを使用して、MySQLパスワードの強度をテストできます。

パスワード検証プラグインを設定することを選択した場合、スクリプトはパスワード検証レベルを選択するように要求します。 2と入力して選択する最強のレベルでは、パスワードの長さが8文字以上で、大文字、小文字、数字、特殊文字が混在している必要があります。

Output
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: 2

Validate Password Pluginの設定を選択したかどうかに関係なく、次のプロンプトはMySQL rootユーザーのパスワードを設定することです。 選択した安全なパスワードを入力して確認します。

Output
Please set the password for root here. New password: Re-enter new password:

Validate Password Pluginを使用した場合は、新しいパスワードの強度に関するフィードバックを受け取ります。 次に、スクリプトは、入力したばかりのパスワードを続行するか、新しいパスワードを入力するかを尋ねます。 入力したパスワードの強度に満足している場合は、Yと入力してスクリプトを続行します。

Output
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

その後、YENTERの順に押すと、以降のすべての質問のデフォルトを受け入れることができます。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートrootログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。

これで、CentOS8サーバーにMySQLをインストールして保護しました。 最後のステップとして、データベースがアクセス可能であり、期待どおりに機能していることをテストします。

ステップ3—MySQLをテストする

管理コマンドを実行できるクライアントであるmysqladminツールに接続することで、インストールを確認して情報を取得できます。 次のコマンドを使用して、 root -u root)としてMySQLに接続し、パスワード(-p)の入力を求め、インストールのバージョンを返します。

  1. mysqladmin -u root -p version

次のような出力が表示されます。

出力
mysqladmin  Ver 8.0.17 for Linux on x86_64 (Source distribution)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version		8.0.17
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/lib/mysql/mysql.sock
Uptime:			2 hours 52 min 37 sec

Threads: 2  Questions: 20  Slow queries: 0  Opens: 131  Flush tables: 3  Open tables: 48  Queries per second avg: 0.001

これは、インストールが成功したことを示しています。

MySQLに接続してデータの追加を開始する場合は、次を実行します。

  1. mysql -u root -p

前のmysqladminコマンドと同様に、このコマンドには-uオプションが含まれています。このオプションを使用すると、接続するユーザーを( root )として指定できます。 -pオプションは、前の手順で設定したユーザーパスワードの入力を求めるコマンドを指示します。

root MySQLユーザーのパスワードを入力すると、MySQLプロンプトが表示されます。

そこから、MySQLインストールを使用してデータベースを作成およびロードし、クエリの実行を開始できます。

結論

このチュートリアルに従うことで、CentOS8サーバーにMySQLをインストールして保護しました。 ここから、NginxとPHPをインストールして、サーバー上で完全に機能するLEMPスタックを使用できます。

MySQLの使用について詳しくは、公式ドキュメントを確認することをお勧めします。