Ubuntuで自宅サーバー構築!【データベースサーバー編】

ubuntu-database-server

今回は、UbuntuMariaDBをインストールして、データベースサーバーを構築したいと思います。
前回のストレージサーバーと今回のデータベースサーバーは、これから先に構築するWEBアプリケーションサーバーやZabbixサーバーも利用するので、しっかり構築していきましょう!

MariaDBのインストール

いつものようにサーバー系の操作はroot権限で行ってくださいね。
いつもお世話になっている参考にサイトはこちらになります!

パッケージのインストールと設定

まずはMariaDBサーバーパッケージをインストールします。

# apt -y install mariadb-server

すぐに初期設定を始めても構いませんが、MariaDBの設定ファイルでデフォルトの文字コードだけ確認し、もし違ってたら変更しておきましょう。

# vi /etc/mysql/mariadb.conf.d/50-server.cnf
・・・
character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci
・・・

今時は世界的にUTF-8が当たり前で、さらに4バイト長の文字が扱える「utf8mb4」がオススメです。
設定を確認できたら再起動します。

# systemctl restart mariadb

MariaDBの初期設定

MariaDBには、インストールした際のセキュリティを向上させるスクリプトがありますので、それを実行して初期設定をします。
基本的には「YYES)」で進んでいきますが、詳しく知りたい方はMariaDB公式のKBをご確認ください。

それでは、スクリプトを実行しましょう!

# mysql_secure_installation

rootパスワードを設定します。

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

匿名ユーザー削除します。

Remove anonymous users? [Y/n] y
 ... Success!

rootリモートログイン無効化します。

Disallow root login remotely? [Y/n] y
 ... Success!

テストデータベース削除します。

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

特権情報リロードします。

Reload privilege tables now? [Y/n] y
 ... Success!

少し待って~。。

Cleaning up...

以下のように表示されたら完了です!

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.Thanks for using MariaDB!

権限と認証の設定

一応、初期設定はこれで完了ですが、冒頭でも記載したように外部からアクセスできないことがあるので、追加で権限認証の設定を行います。
ここでは例としてrootユーザーを設定しますが、セキュリティを考慮して設定してください。

外部アクセス時のユーザー権限

デフォルトは「unix_socket認証になっている(これでは外部からアクセスできないので後ほど変更しますが)ので、ユーザー名やパスワードは入力せずにログインできます。

# mysql

次に、roothostを確認してみます。

MariaDB [(none)]> select user, host from mysql.user;
+------+---------------+
| user | host          |
+------+---------------+
| root | localhost     |
+------+---------------+

現在rootユーザーは「localhost」のみになっていて、自身のサーバーのからしかアクセスできない状態なので、同じネットワーク内だったらアクセスできるように変更します。

GRANT ALL PRIVILEGES ON *.* TO root@'192.168.100.%' IDENTIFIED BY 'password' WITH GRANT OPTION;

この設定で「192.168.100.%」のセグメントから、全てのテーブルに操作権限を持つrootユーザーでアクセスできます。

MariaDB [(none)]> select user, host from mysql.user;
+------+---------------+
| user | host          |
+------+---------------+
| root | 192.168.100.% |
| root | localhost     |
+------+---------------+

パスワード認証に変更する

先程、デフォルトでは「unix_socket認証になっていると記述しましたが、これでは外部からパスワード認証でアクセスする際に、よく見かける以下のエラーで悩まされます。

Access denied for user 'root'@'192.168.100.XXX' (using password: NO)

そこで、パスワード認証に変更するために、mysqlデータベースのuserテーブルのpluginの値を変更します。
まずは、現在の設定を確認してあげましょう。

MariaDB [(none)]> select user, host, plugin from mysql.user;
+------+---------------+-------------+
| user | host          | plugin      |
+------+---------------+-------------+
| root | localhost     | unix_socket |
| root | 192.168.100.% | unix_socket |
+------+---------------+-------------+

見ての通リ、デフォルトでは「unix_socket」になっているのが確認できました。
それではパスワード認証にするために「mysql_native_password」に変えてあげます。

MariaDB [(none)]> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
MariaDB [(none)]> FLUSH PRIVILEGES;

設定を反映したら、再度確認します。

MariaDB [(none)]> select user, host, plugin from mysql.user;
+------+---------------+-----------------------+
| user | host          | plugin                |
+------+---------------+-----------------------+
| root | localhost     | mysql_native_password |
| root | 192.168.100.% | mysql_native_password |
+------+---------------+-----------------------+

これでパスワードを使用したアクセスが可能になります。
次回以降、作成したユーザーもこの設定にしますのでお忘れなく!

この記事が気に入ったら
いいね ! しよう

Twitter で

東京生まれ福岡育ちの文系プログラマー。
テクノロジーの恩恵を感じながら日々精進しています。
広く浅くをモットーに、最近ではプログラミングだけでなく、仮想サーバーからセキュリティ、監視システムなども勉強中です。

管理者をフォローする

コメント

Amazon プライム対象
タイトルとURLをコピーしました