庶民にとってデータベースとはどのような存在なのか

普段コンピューターの話になると、主にハードウェアや事務系のアプリケーションをいかに操るかといった話題になることが多いように感じます。

そんななかでも、ワープロや表計算ソフトについて語られることはあってもデータベースとなると一般的には関心が薄いようです。

私なども、PCの知識は人並み以上にあるつもりですが他人から相談されるのはWindowsの基本操作やMS_Excelについてのことばかりでデータベースの話題はほとんどありません。
世の中PCと言えばExcelのことなのかと少々考えさせられるほどです。

そもそもデータベースとは何なのか?

単にデータベースと言えば、その詳細は知らなくても言葉では聞いたことがある。別に詳しく知ろうとも思わない。

多くの人がデータベースと聞いて感じる印象はそんなものでしょう。

ただし、一度でもデータベースの利便性に気づく場面に遭遇できれば意識は変わるはずです。

コンピュータ関連の用語であることは知っている

データベースという言葉自体を知らないという大人は割と少数派であることは間違いないでしょう。しかし、データベースとは何かと問われたとき正確に答えられる人は多くはありません。

情報関連の用語であることは知っているが、主に何のことを指すのかについては関心がないというのが世間的なデータベースの立ち位置なのは間違いないようです。

データベースの一般的な捉え方

データベースのイメージに似ているお菓子

情報関連のサイトでよく見かけるデータベースを表す図形やアイコンは写真のお菓子のような見た目です。

データを格納しているディスクを重ねたイメージですね。
辞書などによればデータベースとは「情報機器を用いて人が利用しやすい形で整理したデータの集まり」とかそういった表現をしています。

ものによっては「有機的に整理…」とか言われていますが、意味合いを考えれば甚だ無機質なものであるのは間違いないでしょう。

簡単に言うならば、電子的な情報を利用しやすいように整理して格納してるものがデータベースであると言えます。

ポイントは「人が利用しやすいように整えられている」ということです。

表計算ソフトでまとめられたデータは、整理はされていますが万能な用途に整えられているわけではありません。
ある特定の社員や顧客へ分かりやすく綴った特定の情報でしかなく、後々別な用途に使うには補足や修正をともなうもので、そこがデータベースとは異なります。

一方データベースが人へ吐き出すデータは、必要な数値の羅列であったり固有名詞であったりと単純なものが多いです。

これが役立つのはリアルタイムに答えだけが欲しい場合です。
ワープロや表計算に多いグラフなどの補足や解説は二の次な場面ではデータベースを活用した方が便利なわけです。

データベースを知ることで広がる世界

日々繰り返されてきた単純な仕事の記録から、その事象が発生したのは何時だったのか、あるいは収益や支払いがいくらだったのか時刻や数値だけを知りたい場合、あるいは取引の相手が誰だったのかという人の名前だけを瞬時に引き出したいときデータベースシステムが役に立ちます。

ここで私がいくら熱く語っても実際にデータの引き出し方の手法に触れて体験してみないことには理解はしにくいかもしれません。

事実、私もその手の話を同僚にしても関心は持っていただけないのが状況です。

データベースというのは、物を変え形を変えそれ自信が大きな付加価値を持っているとも言えます。
それが、データベースを独自に構築する習慣が世に広まらない原因かもしれません。

多くの会計ソフトや宛名を印刷するために特化した住所管理ソフトなどはデータベースアプリケーションの要素を多く含んでいます。
それらを開発・販売することは大手のソフトウェア会社にとっては利益につながるものです。

そう考えると、特定のノウハウを世に知らすより、そのノウハウを飯の種として利益を捻出した方が業界にとっては美味しい訳であって、それがデータベースが世に広がらない理由かなと勝手に想像してしまいます。

データベースの仕組みは、基本を身につけ順立てて学んでいけば難しいものではありません。
自前でデータベースを構築し利用することで得られる利益を体感できればPCはデータベースを活用するために使うものと考えることができるようになるでしょう。

大げさかもしれませんが、データベースシステムの多様性は表計算の比ではないとさえ思います。

欲しいデータは個人によって異なる

情報化社会といわれ久しい現代ではありますが、未だ情報は個人に特化しているとは言い難いです。

独自の経験や知識を情報として積み重ね自ら利用していくことはデータベースシステムの本来の狙いであると言えることでしょう。

ハードウェアが著しく進化する世界の中で、SQLデータベースというものが古くならないのは、それを活かすことで開ける未来が多く残っているからにほかなりません。

そして、データベースそのものに興味を持ち自ら必要なデータを活かしていくことができれば、その人自身にとって多くの希望を満たしてくれる可能性が広がることでしょう。

正規化された URL:

 

Raspberry Pi OS(旧Raspbian)にphpMyAdminをインストール

Raspberry Piを使ってデータベースサーバー環境を学習するためにCentOS8では先行きが見通せないためOSをDebian系のRaspberry Pi OSに変更したところです。

先に記事にしていた通りLAMP(PHP、Apache、MariaDB)までインストールが進んだところでphpMyAdminをインストールします。

リポジトリからインストール

Raspberry Pi OS(旧名称:Rasbian)では、リポジトリからphpMyAdminをインストールすることができます。

$sudo apt install phpmyadmin

コンソールからコマンドを打つとインストールが始まります。

WebサーバーをApache2に指定

最初にphpMyAdminを動作させるWebサーバーの選択画面が表示されるのでapache2を指定しました。

dbconfig-commonでの設定許可

続いてphpMyAdmin用のデータベースをdbconfig-commonで設定しますか?との確認が表示されますが、面倒な設定を済ませてくれるものと理解して「はい」でEnterしました。

ランダムなパスワードを生成

phpMyAdmin用のMySQLパスワードにランダムなパスワードを生成することについて確認のメッセージが表示されるので「了解」で進みます。

以上の操作だけで自動インストールは完了です。

Apaccheの設定

インストールが終了したら、ブラウザからのアクセスでphpMyAdminを起動できるようWebサーバーの設定を行います。

エディタを使用して/etc/apache2/apache2.confを開いて編集します。

Include /etc/phpmyadmin/apache.conf

ファイル内の記述の一番下にこの通り記述を書き足します。

$sudo sysytemctl restart apache2

ファイルを編集後にWebサーバーを再起動させブラウザのアドレスバーにRaspberry PiのIPアドレス/phpmyadominと入力すればログイン画面が表示されるはずです。

phpmyadominのログイン

phpMyAdminのログイン画面

リポジトリから簡単にインストールができたphpMyAdminですが、ユーザーが作成されていないのでログインができません。

インターネットに接続がない環境で次の通りパスワード無しログインを試しました(お薦めではありません)。

/etc/phpmyadmin/config.inc.phpをエディタで開きます。

$cfg['Servers'][$i]['AllowNoPassword'] = true;

上の記述が//でコメントアウトされている部分が2か所あるので//を外します。

続いて再びコンソール画面に戻ります。

$ sudo mariadb -u root

データベースサーバーで次の通り実行しrootのパスワードをいったん消去。

MariaDB [(none)]>set password for root@localhost=password('');

exitでコンソールに戻ります。

$ sudo systemctl restart mariadb

データベースサーバーを再起動させてから再度127.0.0.1/phpmyadmin/index.phpへアクセスすればログインが可能。

ログイン後のphpMyAdmin

ログイン出来たらrootパスワードの再設定とユーザーの作成を忘れずに行い、/etc/phpmyadmin/config.inc.phpで再びパスワード無しログインを無効(外した2か所の//を元に戻す)に戻しておきます。

インストールで何か不足していれば下にエラーが表示されていますが、リポジトリからインストールできたせいか全くエラーがありませんでした。

また、今回はmysql_secure_installationを実行していません。

これでRaspberry Pi3modelBを使ってphpMyAdminでデータベースの作成や編集が行える環境が整いました。

ピアツーピアでRaspberryPiとPCを有線接続

RaspberryPiを簡易のデータベースサーバーに見立てて学習用に使いたいと考えているところでしたが、現状では自宅のネットワークを介しての接続に依存しているので小型ハードウェアであるRaspberrypiの利点を生かし切れていません。

そこでパソコンからRaspberry Pi3 modelBへLANケーブル1本で接続可能か試してみました。

ラズパイ側での準備

RaspberryPiとPCを1対1で接続するなら、アクセスポイント化やアドホック接続で実現できそうですが、実践しようとしたらドハマりしてしまいました。

そこで有線LANでのピアツーピアなら気軽にできるだろうと検証してみることに。

まず、Raspberry Pi本体にモニタとキーボードを繋いでGUI環境で下準備です。

/etc/dhcpcd.confをエディタで編集し次の通り有線LANのIPアドレスを固定にします。

interface eth0
static ip_address=192.168.1.7/24

192.168.1.7は一例です。ルーター機能は持たせないのでこれだけ記述して保存。

Raspberry Piの設定でSSHを有効にします。

それから、Webページの表示を確認するためにApacheをインストールしておきました。

ケーブル1本でPCから接続

ピアツーピア接続にはPC本体とRaspberry Pi意外にLANケーブルとモバイルバッテリーを準備しました。

Raspberry Piにモバイルバッテリーを接続

PCでの設定

PCとRaspberry PiをLANケーブルで接続し電源を入れます。Raspberry Piはモバイルバッテリーに繋いで起動させます。

p2pのための設定

ラズパイへピアツーピアで接続する設定

パソコンのLANアダプタの設定でも同じく固定のIPアドレスを指定しました。PCは192.168.1.8サブネットマスクを255.255.255.0。

インターネットへの接続を目的にしていないのでデフォルトのゲートウェイは空欄のままです。

ブラウザからIPアドレスを指定して接続

Raspberry PiのWebサーバーへ接続

Apacheのデフォルトページを表示

パソコンのブラウザのアドレスバーにRaspberry PiのIPアドレス192.168.1.7を入力するとApacheのindex.htmlが表示されました。

タスクバーにWiFiが表示されていますが、ラズパイへは有線接続で繋がっています。

SSHで接続

TeraTeamで接続設定

SSHでの接続にはTeraTermを使います。同じくIPアドレスを指定して接続。

ラズパイへSSH接続でログイン

パスワードを入力してOKへ。piユーザーのパスフレーズをデフォルトから変更していない場合は「raspbrry」です。

ラズパイへSSHでの接続完了

難なく簡単に接続できました。

ノートPCからRaspberry PiへSSH接続

これで、とりあえず安心して電源が落とせそうです。

SSHでRaspberry Piをシャットダウン

もっぱらGUIなのでコマンドはstartxくらいしか知りません。

$sudo shutdown -h now

Raspberry Pi OSはDebianが元になっているので、このコマンドで間違いなかったようですね。

モバイルバッテリー運用のRaspberry Pi

モニターなしでの起動は今回が初めてでしたので、どのタイミングでラズパイ本体から電源ケーブルを抜けばよいか戸惑っていたところ、シャットダウンと同じタイミングでモバイルバッテリーのLEDランプが消えました。

負荷が繋がっている時だけ点く仕様なのでしょうか。

ストレートLANケーブルを使用してSSH

簡易のサーバー環境がこれだけコンパクトに実現できると外出時に持ち出しても気にならないほどです。

今回使用したLANケーブルはp2p用のクロスLANケーブルではなく普通のストレートケーブルでした。

どちらかのハードウェアが対応していればストレートで充分なのでしょうか。

自分で短く加工したものでしたが、この手の用途にはもう少し長いほうが使い勝手が良かったかもしれません。

昨今だと家庭でもLAN環境が整っていることが多く、ましてやRaspberry Piを使ってみようなどという方はネットワーク環境に不自由しないことが多いでしょう。

ピアツーピアと言えば、あまり聞きなれないですが今でも使われる用語なのなのでしょうか、実際にこうして実用してみるといとも簡単に接続できてしまうので拍子抜けしたほどでした。

Raspberry Pi OSでLAMP

Raspbianから名前が変わったRaspberry Pi OSにLAMPを構築しました。

ハードウェアはRaspberryPi_model3B、OSはGUI_Fullでインストール後に日本語環境をインストール済みで、これにApache、PHP、MariaDBを入れて学習用データベースサーバーへ仕上げます。

Apacheのインストール

作業に入る前に$sudo apt updateのおまじないを済ませます。

$sudo apt install apache2

Webサーバーは、これだけでOKのようです。

$sudo ip addr

IPアドレスを調べてアクセスすれば、初期設定で設置されているApacheのindex.htmlの表示が確認できるでしょう。

PHP

次にPHPのインストール。

$sudo apt install php php-dev php-fpm php-gd

目的はデータベースですが、WordPressなどを試したければ次のも入れておきます。

$sudo apt install php-mysql php-mbstring

最終的にphpMyAdminを使いたいのでApacheに必要なmod-phpをインストール。

$sudo apt install libapache2-mod-php7.3
$a2enmod proxy_fcgi setenvif
$a2enconf php7.3-fpm
$sudo systemctl restart apache2

再起動は最後にまとめて済ませました。

7.3はバージョン番号なので場合によっては変更が必要な模様です 。

MariaDB

最後にデータベースサーバーです。

$sudo apt install mariadb-server mariadb-client

あとは個々の判断で状態の確認なりシステムの再起動を行えばよいでしょう。これらを補足しようとすると、作業が難解に見えてしまいそうなので省略しました。

ここまでの環境を整えると達人ならコンソールからSQLを扱えそうですが、この後phpMyAdminのインストールまでが目標になります。