VPSでMySQLとPostgreSQLをインストール・設定する完全ガイド

VPSにMySQLとPostgreSQLをインストールし、セキュリティ設定まで行う方法を解説。初心者でも安心のステップバイステップガイド。

MySQLPostgreSQLVPSインストールDBセキュリティ2026/5/25

VPSにMySQLとPostgreSQLをインストールする方法

VPS(Virtual Private Server)を利用してデータベースサーバーを構築する際、MySQLとPostgreSQLは代表的な選択肢です。この記事では、Linux VPS(Ubuntu 22.04 LTSを想定)にMySQLとPostgreSQLをインストールし、基本的なセキュリティ設定まで行う手順を解説します。

前提条件

  • VPSのOS: Ubuntu 22.04 LTS(他のディストリビューションでもコマンドが異なる場合があります)
  • サーバーにSSHでアクセスできること
  • sudo権限を持つユーザーで操作すること
  • 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
    

    このスクリプトでは以下の設定を行います:

  • VALIDATE PASSWORD COMPONENTの利用(パスワード強度チェック)
  • rootパスワードの設定
  • 匿名ユーザーの削除
  • rootのリモートログイン禁止
  • テストデータベースの削除
  • 権限テーブルの再読み込み
  • すべての質問に「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.1bind-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で常に最新のセキュリティパッチを適用します。
  • バックアップを取るmysqldumppg_dumpを使用して定期的にデータベースをバックアップします。
  • 最小権限の原則:アプリケーション用のユーザーには必要最小限の権限のみ付与します。
  • MySQL固有のセキュリティ

  • rootユーザーのリモートログイン禁止mysql_secure_installationで設定済み。
  • バイナリログの有効化:障害復旧に役立ちます。
  • PostgreSQL固有のセキュリティ

  • pg_hba.confの適切な設定:特定のIPアドレスからの接続のみ許可するなど、細かく制御します。
  • SSL接続の強制postgresql.confssl = onに設定します。
  • トラブルシューティング

    MySQLに接続できない

  • サービスが起動しているか確認:sudo systemctl status mysql
  • ポートが開いているか確認:sudo netstat -tulpn | grep 3306
  • 認証エラーの場合はパスワードをリセット:sudo mysqlでログイン後、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
  • PostgreSQLに接続できない

  • サービスが起動しているか確認:sudo systemctl status postgresql
  • ログを確認:sudo tail -f /var/log/postgresql/postgresql-14-main.log
  • 認証エラーの場合はpg_hba.confの設定を見直す

  • *この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*

    まとめ

    このチュートリアルでは、VPSにMySQLとPostgreSQLをインストールし、基本的なセキュリティ設定を行う方法を解説しました。どちらのデータベースも広く使われており、用途に応じて選択してください。MySQLはWebアプリケーションとの相性が良く、PostgreSQLは高度な機能と拡張性が特徴です。

    設定後は、定期的なメンテナンスとバックアップを忘れずに行い、安全なデータベース運用を心がけましょう。