データベースとしては,使い慣れたMySQLを選択したかったが,Raspbian では MariaDB(MySQL互換) が推奨されているので,MariaDB で構築する.
■インストール及び起動
(1)MariaDB をインストールする.(コマンドでは,mysqlと書いているが,mariadbが導入される.)
$ sudo apt install default-mysql-client default-mysql-server
(2)MariaDB を起動する.(コマンドでは,mysqlと書いているが,mariadbが起動する)
$ sudo systemctl restart mysql
■プラグインの無効化
(1)root ユーザーで MariaDB にログインする.(初期状態では sudo を付けないとログインできない)
$ sudo mysql -u root
(2)念の為,ユーザー確認.想定通り,root ユーザーでログインできていることがわかる.
MariaDB [(none)]> SELECT USER(); +----------------+ | USER() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec)
(3)データベースを切り替える.
MariaDB [(none)]> USE mysql;
(4)現在の設定を確認すると,プラグインとして,unix_socketがデフォルトで有効になっているが,これは,データベースにログインするとき,linuxのユーザー名も同じでないとログインできなくするという誰得なプラグイン.つまり,unix_socketが有効になっていたため,初めに sudo を付けなければログインできなかった.
MariaDB [mysql]> SELECT Host,User,Password,plugin FROM user; +-----------+------+----------+-------------+ | Host | User | Password | plugin | +-----------+------+----------+-------------+ | localhost | root | | unix_socket | +-----------+------+----------+-------------+ 1 row in set (0.00 sec)
(5)unix_socket プラグインを無効にする.( plugin,Userともに,char型なのでシングルクオーテーションを忘れずに)
MariaDB [mysql]> UPDATE user SET plugin='' WHERE User='root';
(6)設定が反映されていることを確認する.
MariaDB [mysql]> SELECT Host,User,Password,plugin FROM user; +-----------+------+----------+--------+ | Host | User | Password | plugin | +-----------+------+----------+--------+ | localhost | root | | | +-----------+------+----------+--------+ 1 row in set (0.00 sec)
(7)ログアウトして,MariaDB を再起動する.
MariaDB [mysql]> exit $ sudo systemctl restart mysql
(8)sudo 無しで,rootユーザーとしてログインできることを確認する.(確認できたらログアウトする)
$ mysql -u root
■データベースの初期設定(root のパスワード設定等)
(1)データベース初期設定スクリプトを実行する.対話形式で設定できるので,質問どおりに答える.特別な理由がない限り,すべての質問に対してy(yes)で回答すれば問題無い.
$ mysql_secure_installation
(2)root ユーザーのパスワードを設定していれば,パスワード無しではデータベースにログインできなくなる.(以降,パスワードの設定ありとして手順を記述する)
$ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
■一般ユーザーの作成
(1)root ユーザーでログインする.
$ mysql -u root -p Enter password:
(2)ユーザーを作成する.(ここでは,ユーザー名として hoge.パスワードとして piyo としている)
MariaDB [(none)]> CREATE USER 'hoge'@'%' IDENTIFIED BY 'piyo';
(3)一度ログアウトして,作成したユーザーでログインできることを確認する
MariaDB [(none)]> exit $ mysql -u hoge -ppiyo
■リモートアクセスの許可
(1)作成したユーザーにリモートではログインできないことを確認する.(IPは適宜合わせる)
$ mysql -h 192.168.100.3 -u hoge -ppiyo ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.3' (111 "Connection refused")
(2)理由はいくつか考えられるが,Raspberry Piの場合は,conf ファイルの設定により,リモートアクセスが許可されていないことが原因.試しにnmapしてみると,確かに mysql を受け付けていないことが確認できる.
$ nmap 192.168.100.3 Starting Nmap 7.40 ( https://nmap.org ) at 2019-06-08 14:22 JST Nmap scan report for 192.168.100.3 Host is up (0.00073s latency). Not shown: 999 closed ports PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 0.55 seconds
(3)Raspberry Pi ではデータベースの設定が書かれた conf ファイルがツリー構造になっていていくつか別れているので,リモートアクセス不許可の設定が書かれいているファイルを grep で検索する.
$ sudo grep bind-address /etc/ -r -n --color /etc/mysql/mariadb.conf.d/50-server.cnf:29:bind-address = 127.0.0.1
(4)特定したファイル(/etc/mysql/mariadb.conf.d/50-server.cnf)をエディタで開き,bind-address行をコメントアウトする.
(修正前)bind-address = 127.0.0.1 (修正後)#bind-address = 127.0.0.1
(5)MariaDBを再起動する.
$ sudo systemctl restart mysql
(6)リモートでログインできることを確認する.
$ mysql -h 192.168.100.3 -u hoge -ppiyo
(7)nmapしてみると,ポート番号3306 に mysql が追加されていることが確認できる.
$ nmap 192.168.100.3 Starting Nmap 7.40 ( https://nmap.org ) at 2019-06-08 14:33 JST Nmap scan report for 192.168.100.3 Host is up (0.00075s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 3306/tcp open mysql Nmap done: 1 IP address (1 host up) scanned in 3.11 seconds
■データベースの作成
(1)root ユーザーでログインする
$ mysql -u root -p
(2)データベースを作成する
MariaDB [(none)]> CREATE DATABASE fuga;
(3)hogeユーザーにfugaデータベースを操作する権限を与える.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON fuga.* TO hoge@'%';
(4)一度ログアウトして,hogeユーザーでfugaデータベースにリモートでアクセスできることを確認する.
$ mysql -h 192.168.100.3 -u hoge -ppiyo fuga
以上.
0 件のコメント:
コメントを投稿