2020 年度 OSS リテラシ 3 : MySQL のセットアップ
はじめに
本演習ではサーバとして VMware 上の仮想マシンを用いる. 本資料では仮想マシンに MySQL (Maria DB) をインストールする手順をまとめる.
データベース管理システム MySQL (Maria DB) のインストールと設定
インストール
データベースサーバとして MariaDB を利用する. MariaDB は MySQL からフォークしたものであり, 最近は MySQL の代わりに MariaDB が使われることが多い.
$ sudo -s # apt-get update ...(略)... # apt-get install mariadb-server mariadb-client ...(略)...
データベースが起動しているか確認する. 実体は MariaDB であるが, mysqld という名前でサーバが起動していることがわかる.
# ps aux | grep mysql mysql 9781 0.3 3.6 653604 74600 ? Ssl 13:43 0:00 /usr/sbin/mysqld root 9831 0.0 0.0 12264 980 pts/0 S+ 13:44 0:00 grep mysql # exit
ユーザとデータベースの作成
SQL のコンソールからデータベースの操作を行う. なお, デフォルトでは 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 2 Server version: 10.1.37-MariaDB-0+deb9u1 Debian 9.6 (MariaDB であることがわかる) 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) MariaDB [(none)]> use mysql; MariaDB [mysql]> select user, plugin from user; +----------+-------------+ | user | plugin | +----------+-------------+ | root | unix_socket | (「UNIX_SOCKET Authentication Plugin」が有効なのがわかれる ) +----------+-------------+ 1 rows in set (0.00 sec)
ユーザの作成をする. ユーザ名 (以下の例では hogehoge) とパスワード (以下の例では YOUR_PASSWD) を適宜設定すること. ホスト名 (以下の例では localhost) は変更しなくて良い.
MariaDB [(none)]> create user 'hogehoge'@'localhost' identified by 'YOUR_PASSWD'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> select user, plugin from user; +----------+-------------+ | user | plugin | +----------+-------------+ | root | unix_socket | | hogehoge | | (ユーザ hogehoge が増えていることがわかる) +----------+-------------+ 2 rows in set (0.00 sec)
作成したユーザに対して, MySQL の管理者権限 (ALL PRIVILEGES) を設定する. "*.*" とすることで, 全てのデータベースの全てのテーブルという意味になる. ユーザ名 (以下の例では hogehoge) は適宜変更をすること.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'hogehoge'@'localhost'; Query OK, 0 rows affected (0.00 sec)
データベース iotex を作成する.
MariaDB [(none)]> create database iotex; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | iotex | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.00 sec)
ユーザとデータベースを作成したら SQL コンソールからログアウトする.
MariaDB [(none)]> exit; Bye
課題
動作確認のために, 以下のテーブルを作成せよ. テーブルの作成, データの挿入, データの表示に用いた SQL 文と戻り値を wbt のオンラインテキストにコピペせよ.
+--------+-----------------+--------+--------+-----------+ | 学生 | 科目 | 教員 | 学科 | 学科長 | +--------+-----------------+--------+--------+-----------+ | S1 | プログラム | P1 | 情報 | C1 | | S1 | 情報工学 | P2 | 情報 | C1 | | S2 | プログラム | P1 | 情報 | C1 | | S2 | 情報工学 | P3 | 情報 | C1 | | S3 | 設計演習 | P4 | 設計 | C2 | +--------+-----------------+--------+--------+-----------+ 学生 : varchar(2) 科目 : varchar(20) 教員 : varchar(2) 学科 : varchar(20) 学科長 : varchar(2) primary key (学生,科目)
参考までに, テーブルの作り方は以下の通りである. なお, コマンドは大文字でも小文字でも良い.
テーブルの定義 CREATE TABLE テーブル名 ( 列名1 データ型, 列名2 データ型, … [, primary key (列名p1, 列名p2, …) ] [, foreign key (列名f1) references 参照テーブル名 (参照列名) ] [, check (条件) ] ); テーブルに値を入れる. INSERT INTO テーブル名 [ (列名1, ..., 列名m)] VALUES (値1, ..., 値m); テーブルのデータを一覧表示する SELECT * FROM テーブル名