AWS に乗せるサービスの開発をしているしているのですが、
やはり、公開されているページでデータベースのテストをするのは気がかりなので、
手元の WindowsOS に MariaDB のインストールをしました。
テストがてら、Node.js と PHP で同じ DB にアクセスしてみます。
目次
対象環境とインストーラの入手
インストール先の環境は Windows7 64bit です。
Windows 向けのインストーラはこちらから入手します。
僕は、MariaDB 10.3 Series を選んで、mariadb-10.3.9-winx64.msi をダウンロードしました
インストール
mariadb-10.3.9-winx64.msi を実行します。
- 「Next」
- ライセンスに承諾して「Next」
- 特別設定を変更せずに「Next」
- root パスワードを任意設定、テスト用なのでリモートアクセスのチェックは外し、
文字コードを UTF8 にして「Next」 - 特別設定を変更せずに「Next」
- フィードバックはしないのでチェックを入れずに next」
- 「Install」
- インストール処理終わるまで待機
- 「Finish」
https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.0.6/
mariadb-connector-odbc-3.0.6-win64.msi
パス追加
インストールしただけでは、実行が一々実行ディレクトリに行くことになるので、
環境変数の PATH に mysql.exe のあるディレクトリを追加します。
- C:\Windows\System32\SystemPropertiesAdvanced.exe を実行し、
環境変数(N)を開く
(システムのプロパティが開ければ、コントロールパネルから追っていってもいいです。) - システム環境変数(S)の Path を開く
- 変数値に C:\Program Files\MariaDB 10.3\bin を追加して、「OK」。
開いたウィンドウをすべて閉じる。
確認
コマンドプロンプトを開いてmysql --version
を実行して、
のように返ってくれば OK です。
データベース設定
Node.js でアクセスするにしても、php でアクセスするにしても、
データを投入する必要があります。
任意のユーザーを root 以外に作成し、以下のテーブルを準備しました。
id | data0 |
---|---|
1 | ‘AAAA’ |
2 | ‘BBBB’ |
3 | ‘CCCC’ |
Node.js でアクセス
mariadb アクセス用にパッケージをインストールします。npm i mariadb
mariadb パッケージの ReadMeを参考にしながら
index.js として以下を保存します。
1 | const mariadb = require("mariadb/callback"); |
node index.js
で実行。
実行すると、以下のように取得したテーブルの中身を 1 行ずつ表示します。
1 | Connect |
Mode.js で MariaDB にアクセスできました。
PHP でアクセス
今度は PHP でアクセスしてみます。
index.php として以下を保存します。
1 |
|
php index.php
で実行します。
失敗した…。
以下のエラーが出たError:could not find driver
ドライバが見つからないらしい。
いろいろ調べたら、php_pdo_mysql.dll が参照できていないかららしい。
なので、以下の対応をとった。
- php.ini-production をコピーして php.ini を作成
- 以下の 2 つの項目のコメントアウトを外す。
1
2
3
4733行あたり
extension_dir = "ext"
905行あたり
extension=pdo_mysql
改めてphp index.php
で実行します。
実行結果は以下のように表示されます。(node.js で実行したときの表示に寄せたわけですが…。)
1 | Connect! |
PHP でも MariaDB にアクセスできました。
終わりに
今回は Windows7 64pit 環境にインストールした MariaDB に、
Node.js と PHP でアクセスしてみました。
AWS にアップする予定のサービスのテストのために、windows 環境でのインストールとテストをしたわけですが、
Node.js からのアクセスもできたので、ラズパイにも活用できそうでやってよかったななんて思います。
参考になる人がいれば何よりです。
ではでは。