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;
....(本の情報が表示される)....