Make.

データベースを使う(MySQL)

Pocket

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での基本的なデータベース操作について触れます。

Pocket