SynologyのNASにMariaDBをインストールしてみる
Pythonでスクレイピングなプログラムを書いていたら、やっぱりDataBaseを使用したくなった。今まではCentOSでMariaDBを使っていたのだが、CentOSの後継が不透明になってしまい使う気がなくなった。PCでサーバーを作るとメンテナンスが面倒だし、起動しっぱなしだと電気代も馬鹿にならない。ふと、SynologyのNASにMariaDBがあったような気がして、SynologyのPackageCenterで探すとMariaDB10が使用できるのを見つけた。
早速インストールしてみた。
が、WindowsのSQLクライアントHeighSQLから接続できない。
なぜなんだ。。。
MariaDBの設定を使用にも設定画面はどうもなさそう。
ネットにはこの手の情報があまりない。
ので、ブログに書いておくことにした。。
もっといい方法があるかもしれませんが、あったら教えて下さい。
0.環境
SOHO 192.168.0.*
Synology NAS DS418 DSM7.1 192.168.0.8
MariaDB10 (MySQLの派生バージョン) 192.168.0.8
Windows10 192.168.0.52
HeidiSQL(SQLクライアントはお好みで)
1.MariaDBをインストールする
SynologyのNAS上のWeb画面を開きます。PackageCenterでMariaDBを検索しインストールします。
rootのパスワードを設定します。
MariaDBの設定はこのrootアカウントのパスワード設定ほどしかできません。NAS上で他の設定画面は有りませんので、他の設定はコマンドでの操作になります。ここに気がつくのにあっちウロウロこっちウロウロ状態でした。
2.SSHでNASに接続する
SynologyのNASはDebian系のハードカスタムLinuxだそうです。なので、SSHで接続すればコマンドでいろいろできるようになります。めっちゃ素敵です。Python3も入っているし、Apacheの入れられるそうです。
NAS側では、SSHサービスを有効化しておかなければなりません。
Synology NASの設定画面をブラウザで開く
[コントロールパネル]-
[端末とSNMP]-
[v]SSHサービスを有効化する-
[適用] をクリックする
NASを再起動する(一応)
PCでSSHクライアントを起動し、NASに接続する。
3.MariaDBにアクセスする
ここでは、RLoginを使って接続しました。
MariaDBへ接続します。
$mysql -u root -p<yourpassword>コマンドは、mysql となっていますが、MariaDBです 。MariaDBはMySQLの後継バージョンにあたります。無事接続できると次のようなメッセージが表示されます。
Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 26Server version: 10.3.32-MariaDB Source distributionCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>
4.MariaDBにリモート接続用のアカウントを追加する
現状のアカウント情報を確認する。
MariaDB [(none)]> use mysql MariaDB [mysql]> select host,user,password from user; +--------------+---------+-------------------------------------------+ | host | user | password | +--------------+---------+-------------------------------------------+ | localhost | root | *FE40B32563*************************2E749 | | 127.0.0.1 | root | *FE40B32563*************************2E749 | | ::1 | root | *FE40B32563*************************2E749 | +--------------+---------+-------------------------------------------+ 3 rows in set (0.001 sec)
userはroot、hostは、localhost、127.0.0.1、::1が登録されています。
ちなみに、アカウント情報をすべて表示するには次のようにします。
select * from user;
権限情報がかなりの量が出てきます。これを、手動で設定追加するのは冗長です。
かと言って、レコードのコピーをしてから、hostとuserを変更しようにも、どちらもプライマリキーなのでインサート時にエラーが出ます。
MariaDB [mysql]> insert into user (select * from user where host="localhost");ERROR 1062 (23000): Duplicate entry 'localhost-root' for key 'PRIMARY'
アカウントを追加するだけなんですが、
いちばん簡単な方法は、テンポラリテーブルを作成して、プライマリキーを削除してInsertします。
まず、アカウント をテンポラリテーブルにコピーします。
MariaDB [mysql]> create temporary table tmp1 (select * from user where host="localhost"); Query OK, 1 row affected (0.003 sec) Records: 1 Duplicates: 0 Warnings: 0
コピー内容を確認してみます。
select * from tmp1;
テンポラリテーブルtmp1にコピーされました。
プライマリキーのカラム(host)を削除します。
MariaDB [mysql]> alter table tmp1 drop host; Query OK, 1 row affected (0.002 sec) Records: 1 Duplicates: 0 Warnings: 0
userに追加します。
MariaDB [mysql]> insert into user (select 0,tmp1.* from tmp1); Query OK, 1 row affected (0.001 sec) Records: 1 Duplicates: 0 Warnings: 0
MariaDB [mysql]> select host,user,password from user; +--------------+---------+-------------------------------------------+ | host | user | password | +--------------+---------+-------------------------------------------+ | localhost | root | *FE40B32563*************************2E749 | | 127.0.0.1 | root | *FE40B32563*************************2E749 | | ::1 | root | *FE40B32563*************************2E749 | | 0 | root | *FE40B32563*************************2E749 | +--------------+---------+-------------------------------------------+ 6 rows in set (0.001 sec)
host "0"が追加されました。
host"0"をNASに接続するPCのIPアドレスに変更します。このIPアドレスは固定されていなと、PCを再起動したときに変わってしまい非常に面倒です。
当環境ではPCが"192.168.0.52"固定なのでそれに変更します。
MariaDB [mysql]> update user set host="192.168.0.52" where host="0";
変更できたか確認します。
MariaDB [mysql]> select host,user,password from user; +--------------+---------+-------------------------------------------+ | host | user | password | +--------------+---------+-------------------------------------------+ | localhost | root | *FE40B32563*************************2E749 | | 127.0.0.1 | root | *FE40B32563*************************2E749 | | ::1 | root | *FE40B32563*************************2E749 | | 192.168.0.52 | root | *FE40B32563*************************2E749 | +--------------+---------+-------------------------------------------+ 4 rows in set (0.001 sec)
よさそうですね。
最後にこのアカウント情報をデータベースに反映させます。
これを忘れると、いくらアカウント情報を修正しても全くリモートログインできません。
MariaDB [mysql]>flush previleges;
5.HeidiSQLでMariaDBに接続する
WindowsのSQLクライアントとして有名なものにHeidiSQLがあります。ハイジSQLです。
定番なのでインストール手順等は他のサイトに譲ります。
セションマネージャーでMariaDBを追加します。
無事接続できれば作業完了です。
お疲れ様でした。
ここまでできれば、HeidiSQLでMariaDBのアカウントを追加したり、Hostを変更したり自由にできるようになります。
ただ、アカウントのデータを弄るときにSSL_chipperでエラーが発生します。
ERROR 1364: 1364: Field 'ssl_cipher' doesn't have a default value
mysql.user.ssl_chipper
の値を
Y
に変更すると発生しなくなります。
よく忘れてパニクる私。