yuuki blog

プログラミング をアプトプットしています。

AWS (本番環境でのデータベース作成)

 

データベースの種類の一覧

  • 階層型データベース
  • ネットワーク型データベース
  • リレーショナルデータベース

この中でもっとも利用されているのが「リレーショナルデータベース」です。
エクセルの表のような形で情報を整理し、管理できます。そして、このリレーショナルデータベースを管理するソフトウェアは「リレーショナル・データ・ベース・マネジメント・システム(RDBMS)」と呼ばれます。

そんなRDBMSの中でも代表的なものの1つが「MySQL」です。

 MySQL

MySQL」とは、Oracle社が開発・提供をしているRDBMSです。データベースの作成、編集、削除などを行うことができます。オープンソースソフトウェアとして公開されており、誰でも無償で利用できます。

Oracle社のMySQL紹介ページ

MySQL公式ページ

そして、MySQLから派生した「MariaDB」というデータベースがあります。

 MariaDB

MariaDB」とは、MySQLの派生として開発されているオープンソースソフトウェアです。MySQLとの互換性があります。今回デプロイカリキュラムで使用しているAmazon Linux 2ではMariaDBを使用することになっています。

基本的にMariaDBMySQLは同様のものと考えていただいて差し支えありません。

MariaDBを起動しよう

本項ではデータベースの設定と起動を行い、デプロイするアプリケーションのデータベースが適切に使えるようにします。

今回のシステム構成は、以下のような形になっています。

server

1つのEC2インスタンスに、Railsをはじめ必要なソフトをすべてインストールしています。MariaDBもそのうちの一つです。上の図で「データベースサーバー」と書かれているものが、MariaDBに当たります。MariaDBのようなソフトはデータベースの管理を行うため、そのように呼ばれることもあります。

それでは、順に進めてましょう。

 MariaDBをインストールしましょう

Amazon Linux 2を利用している場合、MariaDBは 「yumコマンド」からインストールできます。

以下のコマンドを実行してください。

ターミナル(EC2内で実行)
1
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install mysql56-server mysql56-devel mysql56 mariadb-server mysql-devel

 データベースを起動しましょう

データベースを起動するために「systemctlコマンド」を利用します。

 systemctlコマンド

systemctlコマンドは、Amazon LinuxCentOSに含まれているもので、インストールしたソフトウェアの起動を一括して行えるツールです。

ターミナル(EC2内で実行)
1
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl start mariadb

起動できたか確認するために、以下のコマンドを打ってみましょう。

ターミナル(EC2内で実行)
1
2
3
4
5
6
7
[ec2-user@ip-172-31-25-189 ~]$ sudo systemctl status mariadbmariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: active (running) since 土 2020-02-29 07:00:11 UTC; 7s ago
  Process: 5993 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 5957 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)

「active (running) 」と緑色の表示がされれば、データベースの起動は成功です。

 データベースのrootパスワードの設定しましょう

yumでインストールしたMariaDBには、デフォルトで「root」というユーザーでアクセスできるようになっていますが、パスワードは設定されていません。なので、パスワードを設定する必要があります。

パスワードは自身で決めることができます。ご自身が覚えやすいパスワードを設定しましょう。

 0から始まるpasswordは読み込んでくれないケースが多いので避けましょう。(例:「0001password」などはNG)
 設定したパスワードはこの先にある作業でも扱うので、メモアプリなどに控えておきましょう。

それでは、以下のコマンドを実行しましょう。

ターミナル(サーバー)
1
[ec2-user@ip-172-31-25-189 ~]$ sudo /usr/bin/mysql_secure_installation

その後、以下のステップで実行します。

手順 やること
Enter current password for root (enter for none): 」と表示されたらEnterキーを押す
「Set root password? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す
「New password:」と表示されたら自身で決めたパスワードを入力(※とくに画面には何も表示されませんが入力できています)
「Re-enter new password:」と表示されたら、同じパスワードを入力(とくに画面には何も表示されませんが入力できています)

ここで「... Success!」と表示されればパスワードの設定は完了です。しかしながら、続けて細かい設定について答える必要があります。

手順 やること
「Remove anonymous users? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す
「Disallow root login remotely? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す
「Remove test database and access to it? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す
「Reload privilege tables now? [Y/n]」と表示されたら「Y」を入力してEnterキーを押す

プロンプトが表示されたら設定は完了です。

 データベースへの接続を確認しましょう

さきほど設定したパスワードが使えるか確認してみましょう。以下のコマンドを入力してください。

ターミナル(EC2内で実行)
1
[ec2-user@ip-172-31-25-189 ~]$ mysql -u root -p

「Enter password:」とパスワードを入力するように表示されるので、さきほど設定したパスワードを入力して、Enterキーを押してください。以下のように表示されれば、データベースの設定は終了です。

ターミナル(EC2内)
1
2
3
4
5
6
7
8
9
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 142
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

「exit」と入力すれば抜け出すことができます。