TermuxでMariaDB
上記の記事の詳細記事です。
PHPを使う前にまずデータベースを動かしてみます。PHPの前提としてWordPressを動かすことを目標にするので、対象はMySQL、ただTermuxではパッケージがないのでMySQL派生のMariaDBを使います。
インストール
~ $ pkg install mariadb
MariaDBサーバーの起動
~ $ mariadbd-safe
...
これでmariadbは起動するのですが、サーバーが終了するまでこの端末は何もできなくなります。
本来Termuxにはtermux-servicesという専用のサービス管理プログラムがあるのですが、常時起動を前提としているサービスと必要時以外はなるべく起動しないモバイル端末であるAndroidとはあまりマッチしていません(そして現状Google Play版のTermuxではうまく動きません)。なので、今回はこちらを使用せずに、フォアグラウンドでサーバープログラムを動かします。必要に応じて、複数端末を切り替えて動かしてください。
なお、一度起動するとCtrl+Cでは停止しません。綺麗に停止するには次節で説明するコマンドが必要です。
MariaDBサーバーの停止
~ $ mariadb-admin -u root shutdown
MariaDBのログ
今回はフォアグラウンドでサーバーが動いていることもあり、そこまで必要ないかもしれませんが、やはりサーバーの動作結果は原則ログに出るものなので、その場所だけ…
$PREFIX/var/lib/mysql/localhost.err
MariaDBに接続する
こんな感じに使います
~ $ mariadb -u root test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 11.8.0-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [test]> create table message(id varchar(100) primary key, text varchar(100));
Query OK, 0 rows affected (0.016 sec)
MariaDB [test]> insert into message values('0', 'はじめまして、こんにちは'),('1','こんにちは');
Query OK, 2 rows affected (0.007 sec)
Records: 2 Duplicates: 0 Warnings: 0
MariaDB [test]> select * from message;
+----+--------------------------------------+
| id | text |
+----+--------------------------------------+
| 0 | はじめまして、こんにちは |
| 1 | こんにちは |
+----+--------------------------------------+
2 rows in set (0.002 sec)
MariaDB [test]> exit
Bye
~ $
やっていることは、
- ユーザーrootで接続し、testデータベースを操作
- id列とtext列を持つmessageテーブルを作成
- 2行分のデータをmessageテーブルに追加
- messageテーブルの全内容を出力
だけです。データベースを操作している言語はSQLです。データベースごとに結構方言があるので、標準はあるのですが個別に覚える必要があります。まあそんなに詰め込む必要もないので、必要なときに必要な範囲だけ都度理解していけばさほど負荷にはならないでしょう。
ORMからアクセスできることもあるので。ただ、データベースの一番の敵は時間です。これだけ注意しておく必要があり、何をすると時間がかかるのかを理解するのに必要な程度には、(言語ではなく)仕組みを把握しておく必要があります。そして具体的な問題に対処するのに個別のSQLが必要になります。
Discussion