はじめに
この連載では、オープンソースのリレーショナル・データベース(RDB)の「MySQL」と「PostgreSQL」を使いこなすヒントを、両製品の共通点と違いを確認しながら解説していきます。
現在、それぞれの製品をベースとしたクラウド・データベースは複数存在しています。一方でユーザーがデータベースを含むインフラ全てを管理する運用形態にもクラウド・ベンダーの都合に振り回されずに済むなどのメリットもあります。連載ではクラウドにも共通するテーマにも触れながら、オープンソースである両製品をフル活用するためのTipsも紹介していきます。
なお、この連載では製品の比較を多く行いますが、製品機能や仕様の優劣についてを論ずる目的のものではないことはあらかじめご了承ください。
今回は、MySQLとPostgreSQLの基本的な情報と導入について解説します。
製品の基本情報
MySQLの開発はPHPやJavaと同じく1995年に始まり、2025年は30周年記念の年です。PostgreSQLは前身となる「POSTGRES」が1986年から実装開始、SQLのインターフェースを統合後に「Postgres95」という名称を経て1996年にPostgreSQLの名称で最初となるv6.0がリリースされています。
MySQLとPostgreSQLはオープンソースのデータベースを代表する製品であることは共通しています。しかし、オープンソースと言ってもライセンスは異なり、また開発する体制にも違いがあります。
MySQLのライセンスはGPL v2および商用ライセンスのデュアル・ライセンスです。厳密には、コミュニティ版のMySQLサーバーに同梱される「OpenSSL」などのライセンスとの互換性のために、ライセンス文書に"Election of GPLv2"という注釈が追加されています。
【参考URL】https://github.com/mysql/mysql-server/blob/trunk/LICENSE
PostgreSQLのライセンスは「PostgreSQL License」です。MITライセンスやBSDライセンスのスタイルであるパーミッシブ(寛容な)ライセンスのタイプとなっており、機能拡張を行って「EDB Advanced」「Extended Server」のようなクローズド・ソースの製品化も可能です。
【参考URL】https://www.postgresql.org/about/licence/
MySQLは開発当初から企業がソフトウェアを開発し、ソースコードを公開するというモデルを取っており、2度の買収を経て現在はオラクルが製品開発を行っています。PostgreSQLは開発コミュニティであるThe PostgreSQL Global Development Groupが開発をリードしています。
表1:製品の基本情報の比較
| MySQL | PostgreSQL | |
|---|---|---|
| ライセンス | 注釈付きGPL v2 および商用ライセンス |
PostgreSQL License |
| 開発チーム | オラクル(企業) | The PostgreSQL Global Development Group コミュニティ |
製品のリリース・サイクル
両製品のリリース・サイクルには大きな違いが見られます。MySQLのリリースのサイクルはこれまで何度が変更が行われていますが、2025年12月現在は「LTS(Long-Term Support)リリース」と「イノベーション・リリース」の2本立てとなっています。
MySQLのLTSリリースはメジャー・リリースから8年間、基本的には1、4、7、10月(各月のおおむね20日前後)、3ヶ月ごとにバグ修正のみを含んだマイナー・バージョンをリリースし、新機能の追加やデフォルト設定の変更は行わない、長期間利用されることを想定したリリースです。
イノベーション・リリースはいち早く新機能を利用できるよう、3ヶ月ごとにメジャー・バージョン・アップが行われます。イノベーション・リリースは次のメジャー・バージョンが出ると、それまでのバージョンはEOL(End of Life)となります。そしてイノベーション・リリースでの新機能や改良点を集約し、2年後にLTSとしてリリースされることになっています。2025年12月の時点での最新のメジャー・バージョンはLTSリリースが8.4, イノベーション・リリースが9.5です。
PostgreSQLは、2017年にリリースされたPostgreSQL 10以降は1年に1回、秋にメジャー・バージョンがリリースされます。2、5、8、11月の第2木曜日にマイナー・バージョンがリリースされることになっています。各メジャー・バージョンはリリース後5年間、サポートが継続され、以降は最終のマイナー・バージョンがリリースされてEOLとなります。基本的には5つのメジャー・バージョンが同時にサポートされている形となっています。
表2:リリースに関する比較
| MySQL | PostgreSQL | |
|---|---|---|
| 最新バージョン (2025月12月1日時点) |
9.5.0イノベーション・リリース 8.4.7 LTS |
18.1 |
| メジャー・バージョンの リリースサイクル |
LTS: 2年ごと イノベーション・リリース: 3ヶ月ごと |
1年ごと |
| マイナー・バージョンの リリースサイクル |
LTS: 3ヶ月ごと イノベーション・リリース: なし |
3ヶ月ごと |
| マイナー・バージョンの リリース月 |
1、4、7、10月 | 2、5、8、11月 |
| サポート期間 | LTS: 8年間 イノベーション・リリース: 3ヶ月 |
5年間 |
共通する点として、3ヶ月ごとのマイナー・バージョンとは別に、脆弱性対策などで緊急のリリースが行われることもあります。
バージョン番号
MySQLのバージョン番号は「9.5.0」のように3つの数字で構成されています。リファレンス・マニュアルでは以下のように説明されています。
- 1桁目: メジャー・バージョン
- 2桁目: マイナー・バージョン LTSでは固定
- 3桁目: シリーズ内でのバージョン
しかし、実用上は最初の2桁がメジャー・バージョンとして扱われています。また、3桁目についてはマニュアルに「イノベーション・リリースでは常に0で固定」とされていますが、実際には脆弱性や深刻なバグへの対応などで例外的に0以外のバージョンがリリースされることもあります。実際に9.0.0に特定の状況で再起動不能になるバグが見つかり、22日後に9.0.1がリリースされています。
PostgreSQLのバージョン番号はPostgreSQL 10以降のバージョンでは1桁目がメジャー・バージョン、2桁目がマイナー・バージョンとなっています。以前は9.5.4のように最初の2桁がメジャー・バージョンの扱いとなっていました。
製品のインストールのポイント
両製品ともオープンソースなので、ソースコードを自分でビルドして利用可能です。しかし、ソフトウェアの利用が目的の場合には、MySQLもPostgreSQLも共通してバイナリの利用を推奨しているのが興味深いところです。バイナリのインストールについてもLinuxディストリビューション標準のものは最新ではない場合が多いため、いずれの製品もそれぞれのYumレポジトリの利用やインストール用のパッケージの利用を推奨しています。
Yumレポジトリを利用したインストール手順は両製品とも概ね同じ流れになっています。バイナリそのもののインスタンスの前にYumレポジトリのRPMをインストールするステップがあります。1点、PostgreSQLのマニュアルが親切なのは、インストールするバージョンとOS、CPUアーキテクチャをプルダウンから選択すると、インストール用のコマンドが生成されることにあります。
MySQLのマニュアルでは、YumレポジトリのRPMのインストール用コマンドが$> sudo yum localinstall mysql84-community-release-{platform}-{version-number}.noarch.rpmと表示されており、手動でプラットフォーム(ディストリビューション)とOSのバージョン番号を書き換える手間があります。
サポート対象のプラットフォーム
両製品ともに多くのOSをサポートしています。「Red Hat Enterprise Linux」「Rocky Linux」「Oracle Linux」「SUSE」「Ubuntu」「Debian」など主要なLinuxディストリビューションをx86_64に加えてARM64(AArch64)を含めてサポートすることや「Windows」「macOS」「Solaris」をサポートしている点は共通しています。細かな差を上げるときりがありませんが、特徴的な違いは以下の通りです。
表3:サポート対象のプラットフォームの特徴的な違い
| MySQL | PostgreSQL | |
|---|---|---|
| Linux 主要ディストリビューション |
x86_64版、ARM64版 | x86_64版、ARM64版、PowerPC版 |
| "その他"の ディストリビューション |
公式バイナリ提供 | ソースコードからビルド |
| Solaris | 公式バイナリ提供 | ソースコードからビルド |
| Windows | 公式バイナリ提供 | EDB社からバイナリ提供 |
| macOS | 公式バイナリ提供 | EDB社からバイナリ提供 |
| サポート対象の情報 | https://www.mysql.com/support/supportedplatforms/database.html | https://www.postgresql.jp/document/17/html/supported-platforms.html |
ソースコードの入手方法
MySQLのソースコードは、ダウンロード・サイトまたはGitHubから入手可能です。PostgreSQLの場合はFile Browserのページまたは独自のgitレポジトリからとなります。
表4:ソースコードに関する比較
| MySQL | PostgreSQL | |
|---|---|---|
| レポジトリ | GitHub(https://github.com/mysql) | 独自のgitレポジトリ(https://git.postgresql.org/) |
| ダウンロード・サイト |
https://dev.mysql.com/downloads/mysql/ *プルダウンよりSource Codeを選択 |
https://www.postgresql.org/ftp/source/v18.1/ |
| 最新マイナー・バージョンのサイズの例 | 481.1MB(.tar.gz) | 27.9 MB(.tar.gz) |
なお、MySQLのソースコードのパッケージがPostgreSQLと比べるとかなり大きくなっていますが、特定のLinuxディストリビューションでライブラリをダイナミック・リンクする前提のものと、「Architecture Independent」と書かれておりライブラリ類も全て含むものがあります。前者のサイズは20MB弱ですが、後者はライブラリとテスト関連のファイルのサイズが大きく数も多いため、トータルで400MB弱から900MB程度と大きくなっています。
おわりに
今回は、MySQLとPostgreSQLの基本的な情報とインストールについて解説しました。どちらもオープンソースの代表的なリレーショナルデータベースですが、それぞれの製品を細かく調べていくと共通点や意外な違いがいろいろと見つかります。
次回は両製品のセキュリティ関連の項目を解説を予定しています。
- この記事のキーワード