各VPSの設定

MariaDB(MySQL)のインストール・設定方法(Cent OS系の場合)

MariaDB(MySQL)とPostgreSQLのどちらを選ぶかの決定要素

まず、自分が使うフレームワークの正式サポート状況を確認しましょう。

WordPressもそのDBを使いたいのなら、MySQL(MariaDB)が前提で作られているので、MySQL/MariaDBを選びましょう。

Djangoでアプリを作りたい場合には、PostgreSQLが前提で作られているので、PostgreSQLを選びましょう。
また、JSON型を使って、その項目内で検索をしたい場合には、どうしてもNative Indexがまだ張れないMySQL(MariaDB)は速度が出ないので、PostgreSQLを選びましょう。
また、地図系(GIS)のアプリを作る場合にも、PostgreSQLの方が強いです。

基本的に出来る事はPostgreSQLの方が多いので、PostgreSQLとMySQL(MariaDB)の選択において、得手不得手もアプリ的にも必須条件がないのなら、PostgreSQLの方を採用して、後で問題になる事はないでしょう。

なお、運用ツール的には、Workbench等、MySQL(MariaDB)の方がより良いものが提供されている傾向にあります。


MariaDBとMySQLのどちらを選ぶのか

MySQLはOracleに買収されてから、独立したオープンソースとしてのMariaDBとOracle所有のMySQLに分かれています。
各Linuxディストリビューターは、MariaDBの方を基本的に選び、機能的にもMariaDBの方がMySQLよりも拡張速度が速い状況になっています。

MariaDBとMySQLの差は小さいですが、基本的にはMariaDBの方を選べば問題ないかと思います。


そもそも自分でDBを設定・運用する事が妥当なのかの判断

データベースは、業務上ミッションクリティカルな部分であり、またサラリーマン的に働く場合には、その設定・運用・教育の人件費にもコストがかかると考えると、企業人として関わる場合には自分でインストール・設定・運用するよりも、サービス側にDB運用の多くを任せられる、DBAAS(Database As A Service)型のマネージドDBサービスを利用した方が、費用対効果的にも妥当となる事が多い。

ただ、個人の財布でサービスを運用する場合、月数千円でも節約したい、という気持ちになるのも妥当であり、その場合には、ようこそ、データベース運用者の道へ、という事になります。


MariaDBのインストール

sudo yum install mariadb-server mariadb;
sudo systemctl start mariadb;
sudo systemctl enable mariadb.service;
sudo mysql_secure_installation;

MariaDB(MySQL)の基本的なコマンド

一番最初のデータベースヘの接続

mysql --user=... --database=... --host=... -p

データベースの作成

CREATE DATABASE データベース名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ユーザーの作成と指定データベースへの権限付与

GRANT ALL ON $DABASENAME.* TO '$DBUSER'@'localhost' identified by "$DBUSERPASSWORD";
GRANT ALL ON $DABASENAME.* TO '$DBUSER'@'10.%' identified by "$DBUSERPASSWORD";
GRANT ALL ON $DABASENAME.* TO '$DBUSER'@'172.%' identified by "$DBUSERPASSWORD";
GRANT ALL ON $DABASENAME.* TO '$DBUSER'@'192.%' identified by "$DBUSERPASSWORD";

データベースのリスト

SHOW DATABASES

使用データベースの切り替え

use データベース名

データベースのテーブルのリスト

SHOW TABLES

サーバーで現在実行されているSQLの確認

SHOW PROCESSLIST

実行時間が長いSQLの実行の停止

kill プロセスID

サーバーとの接続の終了

exit

データベース全体をバックアップ

mysqldump –all-databases –single-transaction –quick –lock-tables=false > full-backup-$(date +%F).sql -u root -p


データベース全体をダンプしたファイルからリストア

mysql -u root -p < $DUMPED.sql ユーザーの権限の同期には [code] flush privileges; [/code] を打つ


ファイアーウォールの設定

各VPSがファイアーウォールを提供しているのなら各VPSのファイアーウォールの機能を、そうでなければ firewall-cmd でLinux自体にfirewallを設定する。

DBのポートはWebサーバーに対してだけあけ、sshログインも自分の管理するサーバー等、特定のIPアドレスからのみログインできるようにするのがセキュリティ上良い。

なお、セキュリティとスペックの分離状
WebサーバーとDBサーバーを置くサーバーは出来るのなら分けた方が良いが
コストの削減でWebサーバーと同一の所に置くのもあり。

ただ、DBのポートをインターネットに公開しないように注意(Webサーバーからローカルアクセスでのみアクセスできるように設定すべき)。