今回は、UbuntuにMariaDBをインストールして、データベースサーバーを構築したいと思います。
前回のストレージサーバーと今回のデータベースサーバーは、これから先に構築するWEBアプリケーションサーバーやZabbixサーバーも利用するので、しっかり構築していきましょう!
MariaDBのインストール
いつものようにサーバー系の操作はroot権限で行ってくださいね。
いつもお世話になっている参考にサイトはこちらになります!
パッケージのインストールと設定
まずはMariaDBサーバーのパッケージをインストールします。
1 |
# apt -y install mariadb-server |
すぐに初期設定を始めても構いませんが、MariaDBの設定ファイルでデフォルトの文字コードだけ確認し、もし違ってたら変更しておきましょう。
1 2 3 4 5 |
# vi /etc/mysql/mariadb.conf.d/50-server.cnf ・・・ character-set-server = utf8mb4 collation-server = utf8mb4_general_ci ・・・ |
今時は世界的にUTF-8が当たり前で、さらに4バイト長の文字が扱える「utf8mb4」がオススメです。
設定を確認できたら再起動します。
1 |
# systemctl restart mariadb |
MariaDBの初期設定
MariaDBには、インストールした際のセキュリティを向上させるスクリプトがありますので、それを実行して初期設定をします。
基本的には「Y(YES)」で進んでいきますが、詳しく知りたい方はMariaDB公式のKBをご確認ください。
それでは、スクリプトを実行しましょう!
1 |
# mysql_secure_installation |
rootのパスワードを設定します。
1 2 3 4 5 6 |
Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! |
匿名ユーザーを削除します。
1 2 |
Remove anonymous users? [Y/n] y ... Success! |
rootのリモートログインを無効化します。
1 2 |
Disallow root login remotely? [Y/n] y ... Success! |
テストデータベースを削除します。
1 2 3 4 5 |
Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! |
特権情報をリロードします。
1 2 |
Reload privilege tables now? [Y/n] y ... Success! |
少し待って~。。
1 |
Cleaning up... |
以下のように表示されたら完了です!
1 2 |
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」認証になっている(これでは外部からアクセスできないので後ほど変更しますが)ので、ユーザー名やパスワードは入力せずにログインできます。
1 |
# mysql |
次に、rootのhostを確認してみます。
1 2 3 4 5 6 |
MariaDB [(none)]> select user, host from mysql.user; +------+---------------+ | user | host | +------+---------------+ | root | localhost | +------+---------------+ |
現在rootユーザーは「localhost」のみになっていて、自身のサーバーのからしかアクセスできない状態なので、同じネットワーク内だったらアクセスできるように変更します。
1 |
GRANT ALL PRIVILEGES ON *.* TO root@'192.168.100.%' IDENTIFIED BY 'password' WITH GRANT OPTION; |
この設定で「192.168.100.%」のセグメントから、全てのテーブルに操作権限を持つrootユーザーでアクセスできます。
1 2 3 4 5 6 7 |
MariaDB [(none)]> select user, host from mysql.user; +------+---------------+ | user | host | +------+---------------+ | root | 192.168.100.% | | root | localhost | +------+---------------+ |
パスワード認証に変更する
先程、デフォルトでは「unix_socket」認証になっていると記述しましたが、これでは外部からパスワード認証でアクセスする際に、よく見かける以下のエラーで悩まされます。
1 |
Access denied for user 'root'@'192.168.100.XXX' (using password: NO) |
そこで、パスワード認証に変更するために、mysqlデータベースのuserテーブルのpluginの値を変更します。
まずは、現在の設定を確認してあげましょう。
1 2 3 4 5 6 7 |
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」に変えてあげます。
1 2 |
MariaDB [(none)]> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; MariaDB [(none)]> FLUSH PRIVILEGES; |
設定を反映したら、再度確認します。
1 2 3 4 5 6 7 |
MariaDB [(none)]> select user, host, plugin from mysql.user; +------+---------------+-----------------------+ | user | host | plugin | +------+---------------+-----------------------+ | root | localhost | mysql_native_password | | root | 192.168.100.% | mysql_native_password | +------+---------------+-----------------------+ |
これでパスワードを使用したアクセスが可能になります。
次回以降、作成したユーザーもこの設定にしますのでお忘れなく!
コメント