AWS Cloud9でMariaDBを使用する方法


#概要
AWS Cloud9の環境にてMariaDBの初期設定、データベースの作成、テーブルの作成、カラムの作成という一連の作業ができることの確認をします。
今回使用するMariaDBは、AWS Cloud9に最初からインストールされているものを使用います。

---

#yum アップデート
```shell:
$ sudo yum -y update
```

---

#MySQLのバージョンを確認
```shell:
$ mysql --version
mysql  Ver 15.1 Distrib 10.2.38-MariaDB, for Linux (x86_64) using  EditLine wrapper
```

---

#MariaDB-Server をインストールする
`sudo systemctl start mariadb` とかを使えるようにするためです

```shell:
$ sudo yum install mariadb-server
```

---

#/etc/my.cnfの編集
文字コードにUTF-8を利用するための設定を行なってください。

```shell:
$ sudo vim /etc/my.cnf
[mysqld]
...
character-set-server=utf8 #mysqldセクションに追記

[client]
default-character-set=utf8 #新規にclientセクションと設定を追記
```

---

#MySQLのステータスを確認(停止状態)

```shell:
$ sudo systemctl status mariadb
● mariadb.service - MariaDB 10.2 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/mariadb.service.d
           └─tokudb.conf
   Active: inactive (dead)
```

---

#MySQLの起動

```shell:
sudo systemctl start mariadb
```

---

#MySQLのステータスを確認(起動状態)

```shell:
$ sudo systemctl status mariadb
● mariadb.service - MariaDB 10.2 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/mariadb.service.d
           └─tokudb.conf
   Active: active (running) since Fri 2021-08-20 02:45:35 UTC; 45s ago
  Process: 9423 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 9220 ExecStartPre=/usr/libexec/mysql-prepare-db-dir %n (code=exited, status=0/SUCCESS)
  Process: 9165 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 9350 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 38
   Memory: 78.3M
   CGroup: /system.slice/mariadb.service
           └─9350 /usr/libexec/mysqld --basedir=/usr
・
・
```

---

#MySQLへの接続
MySQLへは下記のコマンドでログインすることができます。
※初期パスワードは何も入力しないでEnterを押してください。

```shell:
$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.2.38-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)]> 
```

---

#MySQLで使用されている文字コードの確認
utf8が利用されていることを確認してください。

```sql:
MariaDB [(none)]> SHOW VARIABLES LIKE "chara%";
+--------------------------+------------------------------+
| Variable_name            | Value                        |
+--------------------------+------------------------------+
| character_set_client     | utf8                         |
| character_set_connection | utf8                         |
| character_set_database   | utf8                         |
| character_set_filesystem | binary                       |
| character_set_results    | utf8                         |
| character_set_server     | utf8                         |
| character_set_system     | utf8                         |
| character_sets_dir       | /usr/share/mariadb/charsets/ |
+--------------------------+------------------------------+
8 rows in set (0.00 sec)
```

---

#データベース作成
今回は「sample」という名前でデータベースを作成しています。

```sql
MariaDB [(none)]> CREATE DATABASE sample;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sample             |
| test               |
+--------------------+
5 rows in set (0.00 sec)
```

---

#テーブルの作成
今回は「todos」という名前のテーブルを作成しています。

```sql
MariaDB [(none)]> USE sample;
Database changed

MariaDB [sample]> CREATE TABLE sample.todos (
    -> id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    -> done BOOLEAN,
    -> task TEXT
    -> );
Query OK, 0 rows affected (0.01 sec)

MariaDB [sample]> SHOW TABLES;
+------------------+
| Tables_in_sample |
+------------------+
| todos            |
+------------------+
1 row in set (0.00 sec)

MariaDB [sample]> DESCRIBE todos;
+-------+------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra          |
+-------+------------+------+-----+---------+----------------+
| id    | int(11)    | NO   | PRI | NULL    | auto_increment |
| done  | tinyint(1) | YES  |     | NULL    |                |
| task  | text       | YES  |     | NULL    |                |
+-------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
```

---

#カラムの挿入

```sql
MariaDB [sample]> INSERT INTO todos(done, task) VALUES(false, '1');
Query OK, 1 row affected (0.00 sec)

MariaDB [sample]> INSERT INTO todos(done, task) VALUES(false, '2');
Query OK, 1 row affected (0.00 sec)

MariaDB [sample]> INSERT INTO todos(done, task) VALUES(false, '3');
Query OK, 1 row affected (0.00 sec)

MariaDB [sample]> SELECT * FROM sample.todos;
+----+------+------+
| id | done | task |
+----+------+------+
|  1 |    0 | 1    |
|  2 |    0 | 2    |
|  3 |    0 | 3    |
+----+------+------+
3 rows in set (0.00 sec)
```

---

#カラムの更新

```sql
MariaDB [sample]> UPDATE todos SET done=true, task='11' WHERE id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [sample]> SELECT * FROM sample.todos;
+----+------+------+
| id | done | task |
+----+------+------+
|  1 |    1 | 11   |
|  2 |    0 | 2    |
|  3 |    0 | 3    |
+----+------+------+
3 rows in set (0.00 sec)
```

---

#カラムの削除

```sql
MariaDB [sample]> DELETE FROM sample.todos WHERE id=1;
Query OK, 1 row affected (0.01 sec)

MariaDB [sample]> SELECT * FROM sample.todos;
+----+------+------+
| id | done | task |
+----+------+------+
|  2 |    0 | 2    |
|  3 |    0 | 3    |
+----+------+------+
2 rows in set (0.00 sec)
```

---

#カラムの削除（全件）

```sql
MariaDB [sample]> DROP TABLE todos;
Query OK, 0 rows affected (0.01 sec)

MariaDB [sample]> SHOW TABLES;
Empty set (0.00 sec)
```

---

#データベースの削除

```sql
MariaDB [sample]> DROP DATABASE sample;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)
```

---

#まとめ
Cloud9で開発する場合に、便利かもしれません。
開発環境を自分で構築するのは少し手間がかかってしまうので、これは楽にデータベースを使えるかもしれませんね。