Raspberry Piでデータベースを使えるようにします。
データベースを使うのは、最初はハードルが高いですが、使えるようになると、データの収集から、記録したデータを使用したアプリの開発が楽になります。
はじめに
RaspberryPiでロギングしたデータを保存するには、ファイルに書き出すといった方法をとることもできますが、データベースに書き出した方が後から参照するときに簡単になります。データベースのソフトは様々な種類がありますが、ここではMySQLを扱うものとします。
また、ここでのMySQLの使い方は、Raspberry Piに限定したものではなく、Linux共通となります。
MySQLのインストール
Raspberry Pi(Linux)にMySQLをインストールします。
以下のコマンドを実行するだけです。
インストール時に、MySQLのroot用パスワードの入力を求められます。
このパスワードは後で変更することが可能です。
$sudo apt-get install mysql-server
MySQLクライアントの実行
以下のコマンドで、rootとしてMySQLクライアントで制御できるようにします。コマンド実行後、上記で設定したroot用パスワードの入力を求められます。
# mysql -u root -p test Enter password: ←パスワードを入力 mysql> ←ここからMySQLの操作開始
文字コードの確認
データベースを使う前に、文字コードの確認と設定を行います。日本語を扱った時の文字化けを防ぐためUTF8に統一します。
MySQLで以下のコマンドを実行します。
mysql> status
コマンドを実行すると、以下のようなメッセージが表示され、設定を確認することができます。
mysql Ver 14.14 Distrib 5.5.40, for debian-linux-gnu (armv7l) using readline 6.2 Connection id: 46 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.40-0+wheezy1 (Debian) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 32 min 23 sec Threads: 1 Questions: 597 Slow queries: 0 Opens: 443 Flush tables: 2 Open tables: 22 Queries per second avg: 0.307
上記のコマンド実行で、latin1になっている箇所を修正して、utf8にします。
文字コードの設定
文字コードの設定を変えるには、my.cnfファイルを以下のように修正します。
$ vi /etc/mysql/my.cnf [client] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8 [mysqldump] default-character-set=utf8
設定を修正したら、MySQLを再起動して設定を反映させます。
$ sudo /etc/init.d/mysql restart
すべての文字コードが、uft8になっていることを確認します。
mysql> status mysql Ver 14.14 Distrib 5.5.40, for debian-linux-gnu (armv7l) using readline 6.2 Connection id: 37 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.40-0+wheezy1 (Debian) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 15 sec Threads: 1 Questions: 111 Slow queries: 0 Opens: 171 Flush tables: 1 Open tables: 41 Queries per second avg: 7.400
次は、MySQLでの基本的なデータベース操作について触れます。