先週からいろいろといじっているラズパイにMariaDBをインストールしてみました。
ラズパイ4はメモリもCPUも結構パワフルなので、DBサーバとして使用できるのでは?
と思いインストールからセットアップまで実施してみました。
ので、備忘録として残しておきます。
インストール作業
# apt install mysql-client mysql-server
クライアント・サーバ両方インストールしておきます。
インストールしたらとりあえずサービス再起動してステータスを確認
# systemctl restart mysql # systemctl status mysql
● mariadb.service - MariaDB 10.3.23 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-09-10 13:33:10 JST; 7s ago
起動まで確認。
セットアップ作業
rootのunix_socketの無効化
unix_socketが有効になっていると、オプションでそのユーザーを指定してログインしようとしても、実行したユーザーがそのユーザー名と一致しないとログインにはじかれてしまいます。
セキュリティ性を向上させるにはよいのですが、どうしても利便性が損なわれるため、今回はoffしておきます。
rootでログイン
mariadbの起動確認が完了したら、rootユーザーでログインします。
# mysql -u root
このとき、unix_socketが有効になっているため、ログインするためにはrootユーザーにsuするか、sudoをつけて実行してください。
ログインしたらrootユーザーであることを確認。
MariaDB [(none)]> SELECT USER(); +----------------+ | USER() | +----------------+ | root@localhost | +----------------+
無効化
現在の設定を確認します。
MariaDB [(none)]> USE mysql; MariaDB [mysql]> SELECT Host,User,Password,plugin FROM user; +-----------+------+----------+-------------+ | Host | User | Password | plugin | +-----------+------+----------+-------------+ | localhost | root | | unix_socket | +-----------+------+----------+-------------+
pluginにunix_socketが設定されていることが分かります。
ので、こいつを空にUPDATEしてしまいましょう。
MariaDB [mysql]> UPDATE user SET plugin='' WHERE User='root'; Query OK, 1 row affected (0.001 sec)
これでもう一回確認すると、pluginからunix_socketが消えているはずです。
MariaDB [(none)]> USE mysql; MariaDB [mysql]> SELECT Host,User,Password,plugin FROM user; +-----------+------+----------+--------+ | Host | User | Password | plugin | +-----------+------+----------+--------+ | localhost | root | | | +-----------+------+----------+--------+
rootユーザーの初期セットアップ
↑でrootユーザーの情報を確認しましたが、パスワードもかかっていない状態です。
そのままだと誰でもrootでアクセスできるようになってしまっているので、まずはrootのパスワードやその他もろもろの初期セットアップを実施します。
その時に便利になるのが以下のコマンドです。
$ mysql_secure_installation
これを実行すると、対話型で必要な設定をどんどん設定していくことが可能です。
Enter current password for root (enter for none): <- noneパスなのでそのままEnter OK, successfully used password, moving on… Set root password? [Y/n] Y <- rootパスワードを設定するかどうか New password: <- 新しいrootパスワード Re-enter new password: <- もう一回 Password updated successfully! Reloading privilege tables.. … Success! Remove anonymous users? [Y/n] Y <- anonymousユーザーを削除するかどうか … Success! Disallow root login remotely? [Y/n] Y <- リモートからのrootログインを制限するかどうか … Success! Remove test database and access to it? [Y/n] Y <- テスト用DBを削除するかどうか Dropping test database… … Success! Removing privileges on test database… … Success! Reload privilege tables now? [Y/n] Y <- テーブル情報のreload。とりあえずYでいいと思う … Success! All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
完了したらUSER情報を確認してみる。
すると、先ほどは空だったパスワードカラムに値が入っているのが分かります。
+-----------+------+-------------------------------------------+--------+ | Host | User | Password | plugin | +-----------+------+-------------------------------------------+--------+ | localhost | root | ***************************************** | | +-----------+------+-------------------------------------------+--------+
ユーザーの追加
なんでもかんでもrootで操作すると、操作ミスでDBがおしゃかになることもあるので、ある程度操作を制限した別ユーザーを作成して、そのユーザーで運用することをお勧めします。
ので、ユーザーの追加手順。
今回は「pi」というユーザーを作成します。
$ mysql -u root -p MariaDB [(none)]> CREATE USER 'pi'@'%' IDENTIFIED BY 'Password'; Query OK, 0 rows affected (0.001 sec)
これで、ユーザー名「pi」、パスワードが「Password」のユーザーが作成できました。
本当に作成できているかどうかをログインして確認。
$ mysql -u pi -p MariaDB [(none)]> SELECT USER(); +--------------+ | USER() | +--------------+ | pi@localhost | +--------------+
いけてそうですね!
bind-addressの設定
別のサーバからアクセスしたいとき、mariaDBのbind-addressの設定を削除しないといけません。
初期設定ではlocalhostのみ許可されている状態のため、この設定を削除します。
# vi /etc/mysql/mariadb.conf.d/50-server.cnf ----- (変更前) bind-address = 127.0.0.1 (変更後) # bind-address = 127.0.0.1 ----- # systemctl restart mysql
これでほかのホストからもアクセスできるようになるはずです。
接続ホストを制限したい場合はFWを利用するのがいいでしょう。
まとめ
- ラズパイにmariaDBをインストールする手順まとめました
- 以外と簡単!
本当は複数台並べてクラスタ設定とかしたかったのですが、財源は無限にはないのです・・・
冬のボーナスが出たら追加でラズパイ買おうかなあ。
コメント