2023 年度 データベースII : MariaDB のインストールと利用

はじめに

自分の VM (仮想マシン) にログインして SQL 演習を行う. 演習室の Windows にインストールされている putty や Windows Terminal を用いること.

インストール

MariaDB (MySQL) 関連パッケージをインストールする.

$ sudo apt update
$ sudo apt install mariadb-server mariadb-client

設定

データベースのユーザ設定

コンソールからデータベースの操作を行う. なお, デフォルトでは root ユーザに「UNIX_SOCKET Authentication Plugin」が有効にされているため, 以下のように sudo -s すればパスワードは無しでデータベースにアクセスすることができる (一般ユーザが mysql -u root -p とすることはできない).

$ sudo -s

# mysql -u root -p

  Enter password:  <エンターキーを打鍵>
  Welcome to the MariaDB monitor.  Commands end with ; or \g.
  Your MariaDB connection id is 30
  Server version: 10.5.15-MariaDB-0+deb11u1 Debian 11

  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)]>  show databases;   (存在するデータベースの表示)

     +--------------------+
     | Database           |
     +--------------------+
     | information_schema |
     | mysql              |
     | performance_schema |
     +--------------------+
     3 rows in set (0.00 sec)

ユーザの作成をする. ユーザ名 (以下の例では hogehoge) とパスワード (以下の例の YOUR_PASSWD) を適宜書き換えること. MySQL のユーザ名とログイン名を同じにしても構わないが, パスワードはログインパスワードとは違うものにすること. ホスト名 (以下の例の localhost) は変更しなくて良い.

MariaDB [(none)]> create user 'hogehoge'@'localhost' identified by 'YOUR_PASSWD';

   Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'hogehoge'@'localhost';

   Query OK, 0 rows affected (0.00 sec)

ユーザを作ったら一度ログアウトする.

MariaDB [(none)]> quit

   Bye

データベースの作成

作成したユーザで MySQL に改めてログインして, 演習用のデータベース (j4db) を作成する. パスワードは前節で設定したパスワードである.

# exit 

$ mysql -u hogehoge -p

  Enter password: 
  ...(略)...

  MariaDB [(none)]> create database j4db;

     Query OK, 1 row affected (0.00 sec)

  MariaDB [(none)]> show databases;

     +--------------------+
     | Database           |
     +--------------------+
     | information_schema |
     | j4db               |
     | mysql              |
     | performance_schema |
     +--------------------+
     4 rows in set (0.00 sec)

作成したデータベース (j4db) に接続する.

MariaDB [(none)]> use j4db;

   Database changed

テーブルの作り方は以下の通りである. なお, コマンドは大文字でも小文字でも良い.

テーブルの定義
CREATE TABLE テーブル名 
  (  列名1 データ型, 列名2 データ型, … 
      [, primary key (列名p1, 列名p2, …) ]
      [, foreign key (列名f1) references 参照テーブル名 (参照列名) ]
      [, check (条件) ]
  );

テーブルに値を入れる.
INSERT INTO テーブル名 [ (列名1, ..., 列名m)] VALUES (値1, ..., 値m);

テーブルのデータを一覧表示する
SELECT * FROM テーブル名

ここでは動作確認のために, 教科書の図 7.1 のテーブルを作成する.

MariaDB [j4db]> create table 履修情報 (学生 varchar(2), 科目 varchar(20), 教員 varchar(2), 学科 varchar(20), 学科長 varchar(2), primary key (学生,科目) );
Query OK, 0 rows affected (0.01 sec)

MariaDB [j4db]> insert into 履修情報 VALUES ("S1", "プログラム", "P1", "情報", "C1");
Query OK, 1 row affected (0.00 sec)

MariaDB [j4db]> insert into 履修情報 VALUES ("S1", "情報工学", "P2", "情報", "C1");
Query OK, 1 row affected (0.00 sec)

MariaDB [j4db]> insert into 履修情報 VALUES ("S2", "プログラム", "P1", "情報", "C1");
Query OK, 1 row affected (0.00 sec)

MariaDB [j4db]> insert into 履修情報 VALUES ("S2", "情報工学", "P3", "情報", "C1");
Query OK, 1 row affected (0.00 sec)

MariaDB [j4db]> insert into 履修情報 VALUES ("S3", "設計演習", "P4", "設計", "C2");
Query OK, 1 row affected (0.00 sec)

MariaDB [j4db]> select * from 履修情報;
+--------+-----------------+--------+--------+-----------+
| 学生   | 科目            | 教員   | 学科   | 学科長    |
+--------+-----------------+--------+--------+-----------+
| S1     | プログラム      | P1     | 情報   | C1        |
| S1     | 情報工学        | P2     | 情報   | C1        |
| S2     | プログラム      | P1     | 情報   | C1        |
| S2     | 情報工学        | P3     | 情報   | C1        |
| S3     | 設計演習        | P4     | 設計   | C2        |
+--------+-----------------+--------+--------+-----------+
5 rows in set (0.00 sec)

終えるときは, quit する.

MariaDB [j4db]> quit
Bye

演習用テーブルの作成

演習用のテーブルを上記で作成した j4db に作成する.まず,定義ファイルを wget でダウンロードする.

$ wget http://10.171.2.192/workbook.sql

次にそれを mysql コマンドでデータベース j4db に入力する. ユーザ名 (以下の例では hogehoge) は適宜変更すること

$ mysql -u hogehoge -p j4db < workbook.sql

   Enter password:    (<--  hogehoge のパスワードを入力)

確認する.show tables すると数多くのテーブルが作成されていることがわかる. なお,ユーザ名 (以下の例では hogehoge) は適宜変更すること

$ mysql -u hogehoge -p

  Enter password: 
  ...(略)...

  MariaDB [(none)]> use j4db;

     Database changed

  MariaDB [j4db]> show tables;

     +----------------+
     | Tables_in_j4db |
     +----------------+
     | access_log     |
     | author         |
     .....(以下, 略)...........

  MariaDB [j4db]> select * from books;

     ....(本の情報が表示される)....