「基本がわかるSQL入門」サポートページ
正誤表、補足情報、サンプルデータなど
基本がわかるSQL入門 サポートページ ~テスト環境 その1~
Ubuntuインストール後は「端末」を使い、コマンドを入力することでテスト環境に必要なソフトウェアのインストールをします。 コマンドは、以下の書式で示しています。
command
そのままコピーして使いやすくするため、プロンプトや実行結果(実行したコマンドが表示するメッセージなど)は入っていません。 実際に実行している様子の画像をつけているので、適宜参考にしてください。 また、テスト環境の構築に必要なコマンドのみを示しており、各コマンドの使い方などは紹介していないことをご了承ください。
上から順番に真似して実行すれば良いようになっていますが、「とりあえすSQLを実行してみたい」という方は、XAMPP環境の利用をお勧めします。 XAMPPはGUI操作のみで簡単にテスト環境を構築することができます。
https://www.virtualbox.org/wiki/Downloads
VirtualBox xx.xx.xx platform packagesにOS別のダウンロードリンクがあるので、
VistualBoxをインストールするOS(ホストOS)に合ったインストーラーをダウンロードしてください。
※ここでは、Windows版を使用。
https://www.ubuntulinux.jp/download
※ここでは、「日本語 Remix イメージのダウンロード」より、Ubuntu 20.04.1 LTS(ubuntu-ja-20.04.1-desktop-amd64.iso
)を使用。
VirtualBoxのインストーラーを実行し、画面に従ってインストールを行ってください。
※Windows環境でのインストールで“Oracle VM VirtualBox 7.x.x needs the Microsoft Visual C++ 2019 Redistributable Packaging being installed first.”のようなメッセージが表示された場合、Microsoftのサイトからダウンロードしてインストールしてください。(https://visualstudio.microsoft.com/ja/downloads/ “Microsoft Visual C++ Redistributable for Visual Studio 2022” 画面例)
VirtualBoxを実行し、仮想マシン(M)
→新規(N)
で仮想マシンを作成します(作成および設定後、仮想マシンにゲストOSをインストールします)。
次へ(N)
をクリック※仮想マシンにUbuntu
を含んだ名前を付けると、タイプとバージョンが自動で設定される.
次へ(N)
をクリックゲストOSに割り当てるメモリーのサイズを入力します。たくさん割り当てることでゲストOSが快適に動作するようになりますが、その分、ホストOSの動作が犠牲になります。
本書のサンプルを実行する場合、1024~2048MB程度で問題ありません。
仮想ハードディスクを作成する(C)
(デフォルト)を選んで作成
をクリックVDI(VirtualBox Disk Image)
(デフォルト)を選んで次へ(N)
をクリック可変サイズ(D)
(デフォルト)を選んで次へ(N)
をクリック作成
をクリック
本書のサンプル程度であれば、デフォルトの10GBで十分実行できますが、他の操作なども試してみたい場合はもう少し大きくしておく方が扱いやすいでしょう。なお、「可変サイズ」を選択している場合、ホストOSのディスクを消費するのはゲストOSで実際に使用した分のみです。設定
→ディスプレイ
)ホストOSがWindowsの場合、ゲストOSにUbunutuのGUI環境をインストールすると起動時にエラーが出ることがあります(VirtualBox バージョン6.1.14)。
グラフィックスコントローラーを変更しておくことで、この問題を回避できます。
設定(S)
をクリックし、ディスプレイ
画面のグラフィックスコントローラー
をVBoxSVGA
に変更
ホストOSからゲストOSのDBMSに接続してSQLを入力して実行したい場合は、下記を設定しておきます。 ゲストOS(Ubuntu)をインストールした後で設定することも可能です。この場合、ゲストOSをシャットダウンしてから設定してください。
ネットワーク:NAT(デフォルト)
ネットワークアダプターを有効化にチェックマーク(デフォルト)
高度
→ポートフォワーディング(P)
で以下を設定
※ホストポートの番号はに任意(1024から49451の範囲で指定)。 ※名前は任意、プロトコルはTCP、ホストIPとゲストIPは空欄。
起動
でUbuntuのISOイメージを選択してUbuntuのインストーラーを起動起動ハードディスクを選択
という画面が表示されるので、UbuntuのISOイメージを選択して起動
をクリックします。
再起動したらログインし、Guest Additions のインストールを行います。 Guest AdditionsはVirtualBoxのゲストOS専用のソフトウェアで、インストールすることでゲストOSの画面が見やすくなったり、ゲストOSとホストOSでコピー&ペーストができるようになるなど、操作性が向上します。
This system is currently not set up to build kernel modules. Please install the gcc make perl packages from your distribution.
というメッセージが出ている場合は、必要なコマンド類を別途インストールしてからあらためてGuest Additions をインストールしてください。 メッセージが出ていない場合は、Guest Additions のインストールメディアを取り出して再起動します。
コマンド入力のために端末
を起動する。
以下のコマンドを実行、パスワードを入力して[Enter]
sudo apt install gcc make perl
(確認メッセージが表示されるので[Enter])
(メディアのアイコンからソフトウェアの実行
)
(メディアを取り出して再起動)
Guest Additions をインストールして再起動したら、必要に応じ、画面のサイズなどを設定する。
ゲストOSとホストOSの間で、文字列のコピーなどを行えるようにする。
たとえば、ホストOSのWebブラウザで本ページを表示している場合、「ホストOSからゲストOSへ」(または「双方向」)を設定することで、Webブラウザに表示されているコマンド文字列を、端末に貼り付ける(端末で右クリック→貼り付け)ことができるようになります。
端末に表示されているエラーメッセージなどを検索したい場合は、「ゲストOSからホストOSSへ」(または「双方向」)を設定しておくことで、マウスで端末の文字列を範囲選択して右クリック→コピーでコピーし、ホストOSのWebブラウザで検索するようなことができるようになります。
WebブラウザでDBMSに接続し、SQLを実行したい場合はApacheとPHPをインストールする必要があります。 コマンドラインツールのみでかまわない場合は、MySQLのインストールまたはPostgreSQLのインストールへ進んでください。
インストールにはapt
コマンドを使用します。管理者権限が必要なためsudo apt
のように、sudo
と一緒に実行します。実行時にパスワードの入力を求められたら、コマンドを実行しているユーザー(ログイン時のユーザー)のパスワードを入力してください。
また、インストールはsudo apt install 対象
のように行いますが、sudo apt -y install 対象
のように、-y
オプションを使用することで、実行時の確認を省略できます。
確認しながら実行したい場合は、-y
を抜いて実行してください。
#
から始まる行はコメントなので入力不要です。端末にコピー&ペーストで実行する場合は、#
から始まる行も一緒にコピー&ペーストしてかまいません。
# システムを最新の状態にする(参考画面1)
sudo apt -y update
sudo apt -y upgrade
# ApacheとPHPをインストールする
sudo apt -y install apache2 php
# インストールされたApacheとPHPのバージョンを確認する
apache2 -v
php -v
# Apacheが起動できているかを確認する([q]キーで終了、参考画面2)
sudo systemctl status apache2
※activeと表示されていない場合は、sudo systemctl restart apache2
を実行してエラーが表示されないか、
また、再度sudo systemctl status apache2
を実行してみてメッセージを確認する。
(メッセージの中に、参照すべきログや、不足しているファイル、設定などが出力されている。
わからない場合は、メッセージやログに出ている文字列でGoogle検索等を行うとヒントを得ることができる、ことが多い)
# システム起動時にApacheも起動するよう設定
sudo systemctl enable apache2
ApacheとPHPの連携を確認するため、/var/www/html/info.php
というファイルを作成し、Webブラウザでの表示内容を確認します。
nanoコマンドはテキストエディタで、使用方法は画面の下に表示されています。^
はCtrlキーの略で、たとえば^X
はCtrl+X
という操作です。
sudo nano /var/www/html/info.php
以下の内容を入力し、保存して終了する。
<?php phpinfo(); ?>
クライアントOSのWebブラウザ(VirtualBox内のFirefox) http://localhost 下記の様な画面が表示されない場合は、Apacheのインストールおよび起動ができているか、エラーが出ていないかを確認。
http://localhost/info.php 下記の様な画面が表示されない場合は、PHPのインストールができているか、Apacheを再起動して(``)エラーが出ていないかを確認。
ポートフォワーディングの設定を行っている場合、ホストOSのWebブラウザでも確認できる。 この場合、URLは以下の様にする(8080はホストOS側で設定した値)。
http://localhost:8080
http://localhost:8080/info.php
# MySQLおよびPHPから接続するためのツールをインストール
sudo apt -y install mysql-server php-mysql
# MySQL(サーバー)が起動できているかを確認する([q]キーで終了)
sudo systemctl status mysql
※active
と表示されていない場合は、sudo systemctl restart mysql
を実行してエラーが表示されないか、
また、再度sudo systemctl status mysql
を実行してメッセージを確認する。
# システム起動時にMySQL(サーバー)も起動するよう設定
sudo systemctl enable mysql
mysql_secure_installation
コマンドで、最低限のセキュリティ設定およびデータベース管理者(root)でMySQLサーバーに接続する際のパスワードを設定します。
root用のパスワードを入力する他は、基本的に、すべて「y」で処理を進めてください。
sudo mysql_secure_installation
mysqlコマンド(MySQLサーバーに接続するためのコマンド)で、サンプル用のデータベースと、データベースに接続するためのユーザーを作成します。 ここでは、Ubuntuをインストールする際に作成したユーザー名と同じ名前のユーザー(study)を作成しています。
# mysqlを実行(オプションは、ユーザー「root」、パスワードを使用して接続という意味)
sudo mysql -u root -p
mysqlが起動すると、mysql>
というプロンプトが表示されるので、以下のコマンドを実行します。
※ --
以降はコメントなので入力不要です。この画面からコピー&ペーストして実行する場合は--
以降の部分も一緒にペーストしてかまいません。
※SQLのキーワードは大文字にしていますが、入力は小文字でもかまいません(p.24 2.1節「SQLの種類と基本的な書式」)。
-- サンプルデータベース用のデータベース3つを作成
CREATE DATABASE testdb default character set utf8mb4;
CREATE DATABASE sampledb default character set utf8mb4;
CREATE DATABASE sampledb2 default character set utf8mb4;
-- 確認(MySQLで管理しているデータベースが一覧表示される)
SHOW DATABASES;
※作成済のデータベースを削除してから改めて作成したい場合、たとえば「testdb」であればDROP DATABASE testdb;
を先に実行してからCREATE DATABASE…を実行。
続いて、テスト用のユーザーを作成します。study
部分はデータベースに接続するユーザー、mypqssword
部分は接続に使用するパスワードです。
適宜、ご自身のユーザー名と使用したいパスワードに置き換えて実行してください。
なお、パスワードはALTER USER ユーザー名 IDENTIFIED BY '新しいパスワード'
で変更できます。
-- データベース接続用のユーザーを作成
-- CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'データベース接続用のパスワード';
CREATE USER 'study'@'localhost' IDENTIFIED BY 'mypassword';
作成したデータベースに対し、データの追加や削除などを含めたすべての権限を与えます。
WITH GRANT OPTION
は権限の追加や削除も行えるようにするためのオプションです。
GRANT ALL ON testdb.* TO 'study'@'localhost' WITH GRANT OPTION;
GRANT ALL ON sampledb.* TO 'study'@'localhost' WITH GRANT OPTION;
GRANT ALL ON sampledb2.* TO 'study'@'localhost' WITH GRANT OPTION;
設定した権限を再読込してmysqlコマンドを終了します。
FLUSH PRIVILEGES;
quit
phpMyAdminは、PHPという開発言語によるMySQLの管理ツールで、Webブラウザを使ってSQL文の実行ができるほか、データベースやユーザーの作成なども可能です。 MySQLサーバーが利用できるレンタルサーバーにもよく使われています(レンタルサーバーの場合、管理コマンドは実行できないよう制限されている場合があります)。
phpMyAdminは以下のコマンドでインストールできます。 インストール中に設定画面が開くので「apache2」を選択、「dbconfig-common」で「了解」を選択して、画面に従ってパスワードを入力してください(参考画面1~6)。
sudo apt -y install phpmyadmin
インストールが完了すると、以下のURLでMySQLに接続できます(参考画面7~8)。
http://localhost/phpmyadmin/
ホストOSからアクセスする場合は以下のURLを仕様します。
http://localhost:8080/phpmyadmin/
参考画面1~6
(apt install 実行中に以下の画面が表示される)
Adminerは、phpMyAdminと同じくPHPで開発されたデータベース管理ツールです。 MySQL/MariaDBの他、PostgreSQLに接続して使用することも可能です。
ファイル1つで実行でき、とても手軽です。
ここでは、wget
コマンドでバージョン4.7.7(2020年9月現在の最新版)をダウンロードし、/var/www/html/
にadminer.php
という名前で配置しています。
wget https://github.com/vrana/adminer/releases/download/v4.7.7/adminer-4.7.7.php
sudo mv adminer-4.7.7.php /var/www/html/adminer.php
完了すると、以下のURLでMySQLに接続できます。
http://localhost/adminer.php
ホストOSからアクセスする場合は
http://localhost:8080/adminer.php
# PostgreSQLサーバーおよびPHPから接続するためのツールをインストール
sudo apt -y install postgresql php-pgsql
# PostgreSQL(サーバー)が起動できているかを確認する([q]キーで終了、画像参照)
sudo systemctl status postgresql
# システム起動時にPostgreSQL(サーバー)も起動するよう設定
sudo systemctl enable postgresql
# PHP拡張(php-pgsql)をインストールしたのでApacheを再起動
sudo systemctl restart apache2
※systemctl status postgresql
でactiveと表示されていない場合は、sudo systemctl restart postgresql
を実行してエラーが表示されないか、
また、再度sudo systemctl status postgresql
を実行してメッセージを確認する。
まず、管理者用(postgres)のパスワードを設定します。ここではpsql
コマンドを使用しています。
psql
コマンドはPostgreSQLサーバーに接続するためのコマンドで、MySQLのmysql
コマンドに相当します。
psql
だけで実行するとpostgres=#
というプロンプトが表示されてSQLを実行できる他、psql -c "SQL文"
でSQL文を実行することができます。
ここでは、こちらの方法でALTER文を実行しています。SQLキーワードは大文字で示していますが、入力は小文字でかまいません(p.24 2.1節「SQLの種類と基本的な書式」)。
なお、PostgreSQLの管理者はpostgresというユーザーなので、ここではsudo -u postgres psql -c "SQL文"のようにsudoコマンドを使用して実行しています。
※sudoコマンドの
-u`オプションは、どのユーザーの権限で実行するかを指定するオプションで、省略時はrootの権限で実行されます。
# 管理者用のパスワードを設定
# ALTER USER ユーザー名 WITH PASSWORD 'DB管理者用のパスワード' を実行
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'adminpassword'"
テスト用のユーザー「study」を作成し、サンプル用データベース「testdb」「sampledb」「sampledb2」を作成します。
PostgreSQLの場合、ユーザー作成用およびデータベース作成用のコマンドが用意されています。 ここでは、テスト用のユーザーとして、Ubuntuをインストールする際に作成したユーザー名と同じ名前のユーザー(study)を作成しています。
sudo -u postgres createuser study
sudo -u postgres createdb -E utf-8 -O study testdb
sudo -u postgres createdb -E utf-8 -O study sampledb
sudo -u postgres createdb -E utf-8 -O study sampledb2
※参考:SQL文で実行する場合(sudo -u postgres psqlでPostgreSQLに接続して実行)
-- (参考)
CREATE USER study PASSWORD 'DB接続用のパスワード';
CREATE DATABASE testdb OWNER study ENCODING 'UTF-8';
先ほどと同じALTER文で、テスト用のユーザー「study」がPostgreSQLに接続する際のパスワードを設定します。
# テスト用ユーザー(study)のパスワードを設定
# ALTER USER ユーザー名 WITH PASSWORD 'study用のパスワード' を実行
sudo -u postgres psql -c "ALTER USER study WITH PASSWORD 'mypassword'"
PostgreSQLにWebブラウザ(Adminerを使用)から接続する場合、設定ファイルpg_hba.conf
に設定を1行追加する必要があります。
ここでは、nano
コマンド(テキストエディタ)で設定ファイルを開き、local all study md5
という行を追加しています(参考画像)。これは、studyというユーザーはパスワードを使って接続する、という意味の設定です。接続方法の設定はpg_hba.conf
の上に書かれている行から順番に評価されるので、なるべく上の方に追加すると良いでしょう。
sudo nano /etc/postgresql/12/main/pg_hba.conf
追加したら、以下のコマンドでPostgreSQLサーバーを再起動します。
sudo systemctl restart postgresql
テキストエディタでlocal all study md5
という行を追加
Adminerで接続する際には、「データベース種類」で「PostgreSQL」を選択して接続します。