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