【RaspberryPi】DBを使うまで
インストール
$ sudo apt-get install mariadb-server-10.0
$ sudo apt-get install apache2
$ sudo apt-get install mariadb-server-10.0
$ sudo apt-get install apache2
インストールしたものは以下
- mariaDB
- apache2
mysql-server
はインストールできないため
mariadb-server-10.0
をインストールする
DBにログイン
$ sudo mysql -u root
sudoをつけていることに注意
ユーザ確認
select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
プラグインの確認
select host,user,password,plugin from user;
+-----------+------+----------+-------------+
| host | user | password | plugin |
+-----------+------+----------+-------------+
| localhost | root | | unix_socket |
+-----------+------+----------+-------------+
unix_socketを無効化
UPDATE user SET plugin='' WHERE User='root';
unix_socket
はDBへのログインにはラズパイのユーザ名も同じでないとログインできなくするプラグイン
そのため初回ログイン時にはsudo
をつけていた
その後DBを再起動
MariaDB [mysql]> exit;
Bye
pi4@raspi4:~ $ sudo systemctl restart mysql
これでsudoなしでもログインできる
$ mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.0.28-MariaDB-2+b1 Raspbian testing-staging
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
初期設定
rootパスワードの設定
$ mysql_secure_installation
$ mysql_secure_installation
上記コマンドでrootのパスワードやらなんやらを設定できる。
よくわからなかったらy押せばいい
パスワードが反映されているか確認
$ mysql -u root -p
一般ユーザ作成
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
ユーザ名がuser
、パスワードがpass
のユーザを作成
一旦ログアウトして作成したユーザでログインで切るか確認
$ mysql -u user -p pass
その後接続しているユーザも確認
select user();
リモートアクセス許可
接続元から以下コマンドを入力して接続できないことを確かめる
もしこの段階で接続できるならこの項目は飛ばしていい。
$ mysql -h 接続先のDBのIPアドレス -u user -p user
ラズパイではデフォルトでリモートアクセスが許可されていない
この設定を無効にするには以下のファイルの29行目をコメントにする
#bind-address=127.0.0.0
その後DBを再起動
sudo systemctl restart mysql
接続してみる
mysql -h IPアドレス -u user -p user
しかしエラー
$ mysql -h xxx.xxx.xxx.xxx -u root -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (61)
ポートの問題か??
ポートを確認してみる
show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
ポートは3306
先の接続コマンドにポート情報を追加してやってみる
$ mysql -h xxx.xxx.xxx.xxx -P 3306 -u root -p
だめだ。。。。。。。。。
MySQLの設定ファイルに問題は無いか?
MySQLで「ERROR 2003 (HY000): Can’t connect to MySQL server」と怒られた時の対処法を参考にしています。
先のリモート接続を許可した値を変えてみる。
bind-address=0.0.0.0
を追記してみる。
こう書くことですべてのホストからの接続を許可したことになる。
#bind-address=127.0.0.0
bind-address=0.0.0.0
と思ってやってみたけどやっぱ駄目だった。。。。。。
もしかして接続先のラズパイのポートの問題か?
3306が空いてないから接続できなかったんじゃ。。。
そんな恥ずかしいことがあるのか??
とりあえずufwをインストール
$ sudo apt-get install ufw
ufw起動
$ sudo ufw enable
これ起動の仕方
これをやらずに色々設定してみてsudo ufw status
をやっても何も表示されずに軽く詰んでいた
Command may disrupt existing ssh connections. Proceed with operation
上記コマンドを実行すると「sshとか切れっかもしれないけど平気?」って言われるけどY
でOK
sshが切れることはなかった
とりあえずDBのポートと22は許可しておいた
22は以下コマンドで連続した接続に関しては制限を設けることができる
sudo ufw status
Status: active
To Action From
-- ------ ----
3306 ALLOW Anywhere
22 LIMIT Anywhere
3306 (v6) ALLOW Anywhere (v6)
22 (v6) LIMIT Anywhere (v6)
「連続してアクセスしてくるIPアドレスの接続を許可しない」設定を施しましょう。これにより「30秒間の間に6回以上接続を試みた IP アドレスを許可しない」ルールが設定されます。
参考:iptablesが難しいためufwでWEBサーバーのファイアウォール設定
これでできたかな
。。。。だめだった
$ mysql -h X.X.X.X -uuser -puser -P 3306
ERROR 2003 (HY000): Can't connect to MySQL server on 'X.X.X.X' (111 "Connection refused")
とおもったら
もう駄目だと思い再起動をかけると
なぜかリモートで接続ができていた。。。
とりあえずここまでの設定を並べていく。
#bind-address=127.0.0.0
結局ここはコメントにしたまま
ufwは再起動しても起動はしていなかったため影響なしと思われる
(自動起動の設定をしていないから当然だが)
なぜうまくいったかの私的な考え
おそらく/etc/mysql/mariadb.conf.d/50-server.cnf
の設定を変更してもDBを再起動するだけでは反映しきれていなかったような気がする。
参考
Author And Source
この問題について(【RaspberryPi】DBを使うまで), 我々は、より多くの情報をここで見つけました https://qiita.com/oouaioi/items/43fe248a263b6b76bf3c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .