VPSでMySQLとPostgreSQLをインストール・設定する完全ガイド
VPSにMySQLとPostgreSQLをインストールし、セキュリティ設定まで行う方法を解説。初心者でも安心のステップバイステップガイド。
VPSにMySQLとPostgreSQLをインストールする方法
VPS(Virtual Private Server)を利用してデータベースサーバーを構築する際、MySQLとPostgreSQLは代表的な選択肢です。この記事では、Linux VPS(Ubuntu 22.04 LTSを想定)にMySQLとPostgreSQLをインストールし、基本的なセキュリティ設定まで行う手順を解説します。
前提条件
MySQLのインストールと設定
1. MySQLのインストール
MySQLはオープンソースのリレーショナルデータベース管理システムです。以下の手順でインストールします。
<h1>パッケージリストを更新</h1>
sudo apt update
<h1>MySQLサーバーをインストール</h1>
sudo apt install mysql-server -y
<h1>インストール後のバージョン確認</h1>
mysql --version
2. セキュリティ設定
インストール後、mysql_secure_installationスクリプトを実行してセキュリティを強化します。
sudo mysql_secure_installation
このスクリプトでは以下の設定を行います:
すべての質問に「Y」で答えることを推奨します。ただし、パスワード強度チェックは必要に応じて選択してください。
3. MySQLへのログインとデータベース作成
<h1>rootユーザーでMySQLにログイン(パスワード入力)</h1>
sudo mysql -u root -p
<h1>データベースを作成</h1>
CREATE DATABASE sampledb;
<h1>ユーザーを作成し、データベースへの権限を付与</h1>
CREATE USER 'sampleuser'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL PRIVILEGES ON sampledb.* TO 'sampleuser'@'localhost';
FLUSH PRIVILEGES;
<h1>終了</h1>
EXIT;
4. リモート接続の許可(必要な場合)
デフォルトではMySQLはlocalhostからの接続のみ許可します。リモートから接続する場合は設定ファイルを編集します。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1をbind-address = 0.0.0.0に変更し、ファイアウォールでポート3306を開放します。ただし、セキュリティリスクがあるため、必要な場合のみ設定してください。
<h1>ファイアウォール設定例(ufw)</h1>
sudo ufw allow 3306/tcp
sudo ufw reload
PostgreSQLのインストールと設定
1. PostgreSQLのインストール
PostgreSQLは高度なオープンソースのオブジェクトリレーショナルデータベースです。
<h1>パッケージリストを更新</h1>
sudo apt update
<h1>PostgreSQLをインストール</h1>
sudo apt install postgresql postgresql-contrib -y
<h1>バージョン確認</h1>
psql --version
2. サービス起動と自動起動設定
<h1>サービス起動</h1>
sudo systemctl start postgresql
<h1>自動起動設定</h1>
sudo systemctl enable postgresql
3. データベースユーザーとデータベースの作成
PostgreSQLではインストール時にpostgresユーザーが作成されます。このユーザーで操作します。
<h1>postgresユーザーに切り替え</h1>
sudo -i -u postgres
<h1>新しいユーザーを作成</h1>
createuser --interactive
<h1>ユーザー名: sampleuser, スーパーユーザー: n, データベース作成: y, ロール作成: n</h1>
<h1>データベースを作成</h1>
createdb sampledb
<h1>シェルを抜ける</h1>
exit
または、psqlコマンドで直接操作することもできます。
sudo -u postgres psql
<h1>ユーザー作成</h1>
CREATE USER sampleuser WITH PASSWORD 'strongpassword';
<h1>データベース作成</h1>
CREATE DATABASE sampledb OWNER sampleuser;
<h1>権限付与</h1>
GRANT ALL PRIVILEGES ON DATABASE sampledb TO sampleuser;
<h1>終了</h1>
\q
4. リモート接続の許可(必要な場合)
PostgreSQLのリモート接続を許可するには、設定ファイルを編集します。
sudo nano /etc/postgresql/14/main/postgresql.conf
listen_addresses = 'localhost'をlisten_addresses = '*'に変更します。
次に、クライアント認証設定ファイルを編集します。
sudo nano /etc/postgresql/14/main/pg_hba.conf
以下の行を追加(またはコメント解除)して、特定のIPからの接続を許可します。
host sampledb sampleuser 0.0.0.0/0 md5
ファイアウォールでポート5432を開放します。
sudo ufw allow 5432/tcp
sudo ufw reload
セキュリティのベストプラクティス
共通のセキュリティ対策
sudo apt update && sudo apt upgradeで常に最新のセキュリティパッチを適用します。mysqldumpやpg_dumpを使用して定期的にデータベースをバックアップします。MySQL固有のセキュリティ
mysql_secure_installationで設定済み。PostgreSQL固有のセキュリティ
postgresql.confでssl = onに設定します。トラブルシューティング
MySQLに接続できない
sudo systemctl status mysqlsudo netstat -tulpn | grep 3306sudo mysqlでログイン後、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';PostgreSQLに接続できない
sudo systemctl status postgresqlsudo tail -f /var/log/postgresql/postgresql-14-main.log*この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*
まとめ
このチュートリアルでは、VPSにMySQLとPostgreSQLをインストールし、基本的なセキュリティ設定を行う方法を解説しました。どちらのデータベースも広く使われており、用途に応じて選択してください。MySQLはWebアプリケーションとの相性が良く、PostgreSQLは高度な機能と拡張性が特徴です。
設定後は、定期的なメンテナンスとバックアップを忘れずに行い、安全なデータベース運用を心がけましょう。