概要
ラズパイにSQLサーバーを立ててローカルネットワーク上の別PCからwebアクセス出来るようにする。
◇参考リンク
Raspberry PiをSQLサーバーにして、Python3からMySQLのデータを検索して表示させるまで
https://qiita.com/p3ishnm2/items/078d8d7a47ee3b7abc31
インストールするパッケージ一覧
- mariadb :データベースシステム
- Apatch2 :webサーバーソフトウェア
- php :スクリプト言語
- phpMyAdmin :webアプリケーション
実施内容
0.既存パッケージを更新する
1.ラズベリーパイ上にデータベースを構築する
2.構築したデータベースをwebページから操作可能にする
3.ネットワーク上の別PCからアクセス可能にする
0.既存パッケージの更新
パッケージをインストールする前に既存パッケージの更新をしておきましょう。
$sudo apt-get -y update
$sudo apt-get -y upgrade
1.ラズベリーパイ上にデータベースを構築する
データベースシステムmariadbをインストールする。
$ sudo apt update
$ sudo apt install -y mariadb-server
mariaDBを起動し、接続する。
$ sudo systemctl start mariadb
$ sudo mariadb
別PCからアクセス可能な新規ユーザーを作成する。
※コマンド内のユーザ名とパスワード部分は任意のものに書き換えて下さい。
create user 'ユーザ名'@'%' identified by 'パスワード';
2.構築したデータベースをwebページから操作可能にする
下記パッケージ3つをインストールする。
- webサーバーソフトウェア Apatch2
- スクリプト言語 php
- webアプリケーション phpMyAdmin
$ sudo apt install apache2
$ sudo apt install php
$ sudo apt install phpmyadmin
phpmyadminをインストール中、下記のように設定するwebサーバを選択する画面が表示されるのでapache2をスペースで選択してEnter。
インストール完了するとラズパイ上のwebブラウザから下記のリンクにアクセスができるようになっているはず。(1で作成したアカウントを使ってログインも可能。)
http://localhost/phpmyadmin/
※ログインできない場合はlocalhost部分を127.0.0.1に書き換える。
http://127.0.0.1/phpmyadmin/
3.ネットワーク上のPCからのアクセスも可能にする
デフォルト状態だと、外部PCからのアクセスができない。
(bind-addressという項目によってローカルホスト上(127.0.0.1)、つまりラズパイ上からのみしかアクセスできない設定になっている)
下記のコマンドで設定ファイルを開く
$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-addressをコメントアウトするとすべてのIPアドレスから接続ができるようになる。
#bind-address =127.0.0.1
bind-address項目を追加すれば、特定のIPアドレスからのみ接続できるようにも設定可能。
bind-address =127.0.0.1
bind-address =[アクセス許可したいIPアドレス]
これでSQL webサーバーの構築が完了。
別PCのブラウザより下記のアドレスにアクセスできるはず。
※[ラズパイのIPアドレス部分]は書き換えること。
http://[ラズパイのIPアドレス]/phpmyadmin
メモ
1.sudo matribdbコマンドエラー
sudo matribdb コマンドでデータベースに接続しようとした時、"ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)"というエラーが出た。
matribdbのサービスを起動させていないと発生するエラーのようです。
”1.ラズベリーパイ上にデータベースを構築する”に記述の通り、sudo systemctl start mariadbコマンドでmatribdbを起動させてから接続すること。
2.myphpadmin上でのエラー
本記事完了後、テーブル作成→表示する所でエラー発生しました。
調べるのに手こずったので備忘録新規作成しました。
count(): Parameter must be an array or an object that implements Countable