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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CentOS7のRaspberry_PiでphpMyAdminを使う【ミニサイズのデータベースサーバー】

ハードウェアの処理能力としては貧弱なスペックのRaspberry_Pi3_Model_Bですが、MariaDBのインストールまで済んだところでシステム構成的にはデータベースサーバーの機能を備えたことになります。

そこで、SQLの専門知識がなくてもデータベースの管理がグラフィカルなUIで楽に行えるようphpMyAdminをインストールします。

Raspberry_PiへphpMyAdminをインストール

phpMyAdminのインストール方法は通常通りApacheのドキュメントルートへダウンロードしてきたphpMyAdminを解凍するだけです。

インストールするバージョンはPHPとMariaDB(MySQL)のバージョンにより適正に選定する必要がありますが、今回は既にダウンロード済みでネットブックへ使用しいるphpMyAdminをコピーしそのまま配置したら、なんと動作してくれました。

バージョンが合っていない可能性はありますが、このRaspberry_Piは仕事に使用するわけではなく動作検証専門ですので、エラーが出たらそのときインストールし直しても問題ないと考えます。

phpMyAdminでのエラー対処

インストールが済んだphpMyAdminですが、WindowsPCからのアクセスで次のエラーが出たので対応しています。

mbstringエラーの修正

ブラウザでのmbstringエラー

このmbstringエラーについてはPHPのインストールについて書いた記事で書いている通りで「php-mbstringとphp-intl」の追加インストールと「php.ini」ファイルの編集で解決しました。

この赤い帯に白字で表示される「phpMyAdmin-エラー」というメッセージはphp関連の環境が完全に整っていないことでphpMyAdminが出すメッセージです。
ちゃんとシステムにアクセスできているのに初期画面(ログイン画面)すら表示せず赤のエラーというのは、phpとMariaDBを関連づけるために重要な部分が整っていないということなのでしょう。

mysqli拡張がありません

mysqliエラーでphpMyAdminへアクセスできない

mbstringエラーが回避できれば、ようやくログイン画面が見れるかと期待していたら、また赤い見出しのエラーが出てしまいました。

「mysqli拡張がありません。PHPの設定をチェックしてみてください。」とのことです。

# yum innstall php-mysql

「php-mysql」をインストール後にApaheを再起動します。

# systemctl restart httpd.service

これらの「systemctl」を使ったコマンドはCentOS7から利用することになったものでCentOS6では別なコマンドでした。

アクセスが成功したphpMyAdmin

phpMyAdminの初期画面

ようやくログインできたphpMyAdmin

目的のシステムが全部無事に整ったところで、小さな巨人Raspberry_PiでもクライアントPCからのアクセスでphpMyAdminのログイン画面が表示されました。

MariaDBのバージョン表示等

ここのバージョン情報の類がMySQLではなくMariaDBと記載されているところに達成感があります。

CentOS6ではリポジトリを使用したのでバージョンが更に新しいものでしたが基盤ペラペラ一枚のRaspberry_Piで検証できたこと自体が成果だと思っています。

データベースをインポートしてみる

phpMyAdminにはデータベースのインポートとエクスポートの機能があります。自分も以前にWordPressのバックアップでレンタルサーバーにあるphpMyAdminのエクスポート機能を使用したことがありますが、CMSのバックアップだとデータベースを扱っている感じがまるでしませんでした。

インポートとエクスポートのタブ

エクスポート・インポートの手順は簡単です。バックアップの場合はエクスポートのタブをクリックし保存する場所とファイル名を指定してバックアップデータを保存します。

サーバーでもクライアントPCでもどちらでも実行可能な機能です。

エクスポートも要領は同じで、インポートをするサーバーのphpMyAdminにアクセスし今度はインポートタブをクリック後に、保存したファイル(拡張しがsql)がある場所(USBメモリでも可)を指定しインポートします。

このとき、インポート側が新規で構築したシステムならインポート先になるデータベースを新たに作成しておかなければエラーが出てしまいます。

インポートした検証用データ

実際に検証用ネットブックサーバーからインポートしたデータベース

このデータも勿論WindowsPCなどのローカルPCからアクセス・編集が可能です(低スペックサーバーなので結構モッサリしますが)。

手順が分かれば簡単に構築できるRaspberryPiミニサーバー

実証できたRaspberryPiミニデータベースサーバー

こうして手のひらサイズの学習用コンピュータ「Raspberry_Pi3_Model_B」にデータベースサーバーを構築することができました。

こうした手順というのは、Linuxエンジニアや専門技術者にとっては基本知識ですが、書籍などで一般に身につけることが難しいテクニックでもあります。

前回のネットブックにしろ今回のRaspberry_Piにしろ、必要な知識量といういのは該当記事に記した程度のものです。

データベースを操るためのテクニックに興味を持つことが出来れば、仕事に限らず趣味や日常生活でも自分の持っている既存データをもっと生かせる機会ができるはずです。

なお、検証に用いたRaspberry_Piですが時間が合ればCUIでのデータベースサーバー化にも挑戦してみたいと考えています。そちらのほうが、きとサクサク動作することでしょう。

CentOS7のRaspberry_Pi3_Model_BへMariaDBをインストール

小さな筐体のRaspberry_PiへGUI環境のLinuxOSを入れApacheとPHPもインストールが出来たところに、いよいよMariaDBをインストールします。

CentOSが最小インストールでなかったのでMariaDBは既に入っているのかと思ったら少し違うようでした。PCでのインストール手順と同様に作業を進めていきます。

Raspberry_PiへMariaDBをインストール

yumを使用してのインストールはCentOS6のときと一緒でした。

このバージョンからはMySQLは入っていないはずなので削除の行程はは要らないでしょう。

# yum install mariadb mariadb server

「mariadb client」を忘れていましたが、その後のサーバー用途の検証では特に問題はありませんでした。

続いてMariaDBの起動の設定です。

# systemctl enable mariadb service

これでOSの起動時にMariaDBがスターとします。

即スタートさせたい場合は次のコマンド。

# systemctl start mariadb

自動起動を設定していないとき、その場でデータベースシステムをスタートさせたい場合に使用します。

システムの状況を表示させたいときは次の通りです。

# systemctl status mariadb

なにやら色々と表示されていますが、MariaDBが起動出来ていればOKでしょう。

status実行後の表示

MariaDBのインストールについては以上の手順ですが、基本的にyumでインストールして自動起動させるだけです。

初期設定の実行

次に実際にデータベースを運用するための初期設定を行います。

# mysql_secure_installation

これもMySQLとは完全互換ですね。

「mysql_secure_installation」を実行すると、いくつかの設定について良否を問われます。

ここでrootのパスワードなどを設定します。

今回は外部のネットワークに接続していないので、最初にEnterを押した後に全てyを入力して済ませました。

ちなみに全部Yで済ませると、クライアントのアプリケーションからrootでのアクセスが禁止されMariaDBでのユーザー作成が必須になります。

文字コードの設定

クライアントPCからデータベースサーバーへアクセスしたときに、文字コードの設定が実行環境に合ってないとデータの文字列が文字化けしたり特定の記号が表示されたりしてしまいます。

# vi /etc/my.cnf.d/server.cnf

viエディタを使いファイルを編集して文字コードを設定します(設定ファイルの場所がたまたまCentOS6のときと同じでした)。

詳しい手法についてはCentOS6で実施したときのリンクを貼っておきますが、これもMariaDBやMySQLのバージョンで違いがあるようです。

db.danman.jp

なお設定後のMariaDBの再起動はコマンドが異なります。

# systemctl restart mariadb

CentOS7では「systemctl」が多用されるようですね。

小さなデータベースサーバー【Raspberry_Pi】

Raspberry_Pi3_Model_Bの基盤

こうして、MariaDBのインストールが済めば小さな「Raspberry_Pi3_Model_B」も機能的には立派なデータベースサーバーです。

ただし、このままではSQLの知識がない人にとってデータベースサーバーとして扱うことができないため、当然phpMyAdminをインストールしていきます。

Raspberry_Piは、そもそも学習用の端末というかペラペラの小さな基盤一枚です。これが、能力がさほどでなくてもDBMSの機能を持っているとなると「基盤好き」な私にとっては何処かワクワクさせられる魅力を感じるものです。

好きこそものの上手慣れ、との通りこうした楽しみを通じて実用的なデータベースの知識が身につけば少し得した気分にもなれそうです。

CentOS7のRaspberry_Pi3へPHPをインストール

CentOS7でGUI起動を果たしたRaspberry_Pi3_Model_BでphpMyAdminを使うための環境整備を行います。

まだ日本語入力ができない状態ですが、動作確認用データベースサーバーとしては不足はないようです。

Raspberry_PiへPHPのインストール

目的はphpMyAdminが利用できるデータベースサーバーの構築ですが、いわゆるLAMP環境の導入と同じ作業をすることになります。CentOS6のときと同じくPHPのインストールから進めます。

# yum install php

例によって端末を起動しコマンドを実行します。

インストールの行程を確認すると「httpd」の記述があるので「Apache」も同時にインストールされるようです。

Apacheの起動コマンドを実行してみます。

# chkconfig httpd on

ちなみにCentOS6のときに使用したon・offの確認コマンドは何故か使えないようです。

ネットワーク経由でApacheの動作を確認

Apacheのアクセス画像

設定でIPアドレスを手動で指定し、他の端末からRaspberry_PiへアクセスしてみるとApacheが正常に動作していることが確認できます。

このとき、CentOSのファイアウォールで80番ポートの確認と、MariaDB用の3306番ポートの開放をしておきました。

phpMyAdminに関連するphpの補足

Webサーバー的な用途なら、Apacheとphpのインストールで簡単なWebページは公開できそうですが、目的がデータベース運用でしかもDBMS(MariaDB)の管理をグラフィカルなUI(phpMyAdmin)で利用したいとなると簡単には行かないようです。

php.iniの編集

PHPのインストールが済んだところで「/etc/php.ini」ファイルの編集をしておきます。
これをしておかないとphpMyAdminがブラウザで正常に起動できません。

php.iniの編集前半

赤のアンダーラインがコメントアウトを外した記述

php.iniファイルのmbstring後半

黄色の反転はエディタでmbstringを探すため検索をかけたため

上の黄色の部分10カ所の先頭にあった「;」を消してコメントアウトを外します。

mbstringに一行追記

実はコメントアウト記号の削除だけではエラーが解消しなかったためmbstringの記述部分の先頭へ「extension=php mbstring.so」を一行追加しました。

これで、MariaDBとphpMyAdminをインストールすれば正常に起動可能になります(もしかして、この1行追加だけで済んだ??)。

「php-mbstring」と「php-intl」のインストール

PHPのインストール時にyumで実行したのは「php」だけでしたが、最終的にphpMyAdminを正常起動するまでに、「php-mbstring」と「php-intl」をインストールしました。

この2つはPHPインストール時に同時に実行しても良さそうな感じもしますが、エラーを確認してからの対処を記録しておけば知識として身につくことでしょう。

OSのバージョンで対処が異なるPHPとApache

前回データベースサーバー化したノートパソコンではCentOS6を使用し、今回のRaspberry_Pi3_Model_BではCentOS7を使っていますが、いずれも仕上げのphpMyAdminに漕ぎつくまでにはPHPの設定が必要で、これが微妙に異なるようです。

Apacheのテスト

CentOS7のApacheを表示

たとえば「php.ini」ファイルの編集箇所や、Apacheに使うコマンドなどです。

特にApacheはCentOS7では、途中の再起動以外に意識しなくても良いのではと思うほど他に比べ楽でした。

また、CentOSの採用を決める前にノートPCにVineLinuxをインストールしMySQLを動かしてみたり、同じCentOSでPHP7を試してみたりしましたが、どれもApacheとPHPの扱いが微妙に異なったりしています。

できればCentOSでもPHP7を使用したいところですが、どうにも敷居が高くデータベースの学習という本来の目的から外れてしまいそうですので当面はCentOSとMariaDBの組み合わせで環境設定の基本習得に留めておきたい考えています。