WordPress開発者にとってMySQLデータベースの管理は基本的な要件の1つです。Adminerはこれを使った作業を大幅に簡単にしてくれます。
どんなWordPressサイトにも、データベースが必要です。データベースにはサイトのすべての重要なデータが保存されます。これまで長きにわたりMySQL/MariaDBデータベース管理ツールの定番といえばphpMyAdminでした。Adminerはその代わりとなる素晴らしい選択肢です。簡単にサーバーにデプロイできるたった1つの軽いPHPファイルの中に、たくさんの便利な機能を搭載。しかも、UIの美しさも折り紙付きです。
今回はAdminerの概要、phpMyAdminよりも優れている点、Adminerを利用したデータベース管理の仕方などをご紹介します。また、DevKinstaでもAdminerを採用しています。ローカル開発環境でのデータベース管理が楽にこなせますので、これについても触れたいと思います。
それでは、早速見ていきましょう。
Adminerとは?
Adminer(旧称phpMinAdmin)はPHPベース、オープンソースの無料で利用できるデータベース管理ツールです。これを使えばサーバーへのデプロイが非常に簡単になります。たった1つのPHPファイルをアップロードし、ブラウザからアクセスし、ログインするだけでOKです。

MySQLとMariaDBデータベースしかサポートしていないphpMyAdminとは違い、AdminerはPostgreSQL、SQLite、MS SQL、Oracle、SimpleDB、Elasticsearch、MongoDB、Firebirdなど、他のデータベースもサポートしています。さらに、43の言語で利用できます。
Adminerのインターフェースは使いやすく、優れた様々なMySQL関連機能を備え、性能、安全性が強化されています。
それではAdminerをインストールする方法からご紹介します。
Adminerの使い方
インストールの前に、Adminerの動作環境をご確認ください。
たったこれだけです。
公式サイトからAdminerの最新バージョンをダウンロードします。こちらにはAdminerのMySQLのみ、英語のみのバージョンもあります。MySQLもしくはMariaDBデータベース(例えばWordPressサイトなどで)であれば、これらの軽量版を利用してもいいでしょう。

もしくは、ターミナルでcurlコマンドを使い、ディレクトリから直接ダウンロードすることもできます。
curl -o https://github.com/vrana/adminer/releases/download/v4.7.8/adminer-4.7.8.php
本記事の執筆時点ではAdminer 4.7.8が安定して動作する最新のバージョンです。リリースされたばかりのPHP 8.0のサポートが追加されています。これより新しいバージョンが登場している場合、上記コード内のダウンロードURLのバージョン番号を変更しましょう。
ダウンロードが完了したら、この.phpファイルをルートフォルダなど、サーバー上の任意の場所に配置します。とは言え、外部ツールは全て個別のディレクトリに入れることをおすすめします(vendor、assetsなど)。
これでサーバーにAdminerをインストールできました。プラグアンドプレイの設計です。ほとんどすべてのサーバーで利用できます。
Adminerへのアクセス方法
アクセス方法はブラウザからリンクを開くだけです。
例えば、サイトのルートディレクトリに配置した場合、https://your-website.com/adminer-4.7.8.phpを開くとアクセスできます。ドメインの設定をしていない状態であれば、サーバーのIPアドレスもしくはローカルホスト環境からもアクセスできます。

これで、サーバーにインストールされているすべてのデータベースにログインできます。データベースの欄は空欄のままにしておくこともできます。その場合、次の画面ですべてのデータベースの一覧が表示されます。
「永続的にログイン」にチェックを入れておくと、ログイン情報が保存され、脇に表示されるリンクから簡単に同じ画面が開けます。

Adminerの機能
Adminerにはデータベース管理が楽になる様々な機能が備わっています。それぞれ詳しくご紹介します。
データベースサーバーに接続
既にご紹介したとおり、Adminerでサポートしているものであればどのデータベースサーバーでも接続できます。MySQLであれば、デフォルトのユーザー名はrootで、デフォルトのパスワードは空文字列です。既存のデータベースを選択し、ここで管理することもできます。

新規データベースを作成
「データベースを作成」をクリックすると新たなMySQLデータベースを作成できます。データベース名と照合順序を入力します。WordPressのデータベースの場合、推奨の照合順序はutf8mb4_unicode_ciです。

データベースを作成したら、データベース名、スキーマ、ユーザー、テーブルなど様々な要素を変更できます。

これで新たなMySQLデータベースの作成が完了しました。次の画面では、テーブル、列の追加など様々な調整ができます。

データベース名と照合順序を変更
「データベースの変更」をクリックすると、名前と照合順序を変更できます。データベース作成時に入力ミスをしてしまった場合にとても便利です。

例えば、照合順序をutf8_unicode_ciからutf8mb4_unicode_ciに変更してみます。

補足情報:変更するデータベースが既に他のアプリケーションで使用されている場合、こちらで変更した内容がそのアプリケーションのコードにも反映されるようにしましょう。
データベースのスキーマを確認
データベースのスキーマとは、データベースの要素がそれぞれどのように関連しているかを定義する論理的な構造です。MySQLにおいてスキーマはデータベースと同義で、同じものを指します。
一方、PostgreSQL、Oracleなど、他のデータベースでは、スキーマはテーブルの集合のことを指し、データベースを構成する要素です。
WordPressではデータベースにMySQLを使用しています。したがって、WordPressのスキーマとはそのテーブルと列のことを指します。Adminerでは各テーブル間を自由に移動できます。

WordPressにおける典型的なデータベース構造の全体像を理解するのに大変便利です。
テーブルのデータと構造を確認
任意のテーブルをクリックするとその詳細を確認できます。デフォルトでは、該当するテーブルの「構造」のタブが開きます。テーブルの列の名前、型、索引などの情報が確認できます。

データベーステーブルに外部キーやトリガーが紐づいている場合、それらの情報も画面の下部に表示されます。
上記の例ではwp_optionsテーブルの情報が表示されています。ここにはWordPressのすべての情報な設定が保存されています。「データ」タブに移動すると、テーブル内に保存されているすべてのデータが確認できます。

ご覧のとおり、Adminerのユーザーインターフェースは、phpMyAdminよりもかなり見やすいことが分かります。
テーブルと列の設定を変更
画面上部の「テーブルの変更」をクリックするとテーブルと列の設定を変更できます。

テーブルに関しては、名前、エンジン、照合順序を変更できます。また、下部にはテーブルの自動連番の最初の値を設定するオプション、列に初期値を適用するかどうかのオプション、コメント追加欄もあります。
列に関しては、名前、型、長さ、称号順序を変更できます。
また、「+」、「×」ボタンをクリックして列を追加したり削除したりすることもできます。「削除」ボタンをクリックするとデータベーステーブル全体が削除されてしまいますので注意しましょう。
変更を加えたら忘れずに「保存」ボタンをクリックしましょう。
新しい行の挿入と既存の行の更新
「項目の作成」をクリックし、「挿入:(テーブル名)」のタブを開きます。

ここからテーブルに新たな行を追加することができます。Adminerでは列の名前とその型が一覧で表示されるので簡単に入力できます。入力する値にハッシュ関数を利用して、自動で暗号化することも可能です。パスワードなどの機密データの場合非常に便利です。例えば、WordPressではデータベースにパスワードを保存するのに、MD5というアルゴリズムを利用しています。
既存の行を編集するのも同じく簡単です。例えば、サイトの説明を変更したい場合、wp_optionsテーブル内のblogdescriptionの値を編集します。

次に、「option_value」の欄に新しい説明を入力し、「保存」をクリックして変更を反映します。

すべてのテーブルからデータを検索
Adminerではデータベース内のすべてのテーブルから特定のデータの検索をすることができます。その値が含まれている可能性の高いテーブルが表示されます。

「home」というキーワードを検索したところ、最有力候補としてwp_optionsが表示されました。クリックすると、データベース内でキーワードが使用されている具体的な列と行が表示されます。
検索結果の下に表示されるテーブルをクリックすると、詳細を確認することができます。そこからテーブル内でより絞り込んだ検索も実行可能です。

ここでは、例えば、option_name「home」の値を編集しサイトのURLを変更したりできます。
行をすべて削除、テーブルを削除、移動、コピー
Adminerではデータベースの管理画面から直接、テーブルに関する様々な操作をすることができます。

テーブルを選択し、下部のボタンをクリックすることで様々なSQLクエリを実行できます。
例えば、サイト上のコメントをすべて削除したい場合、wp_commentsテーブルを選択し「Truncate」ボタン(注:日本語版でも英語での記載)をクリックします。テーブル内のすべての行が削除されますが、既存の列の構造は維持されます。「削除」ボタンをクリックするとテーブル全体が削除されます。
また、この画面ではテーブルを他のデータベースに「移動」あるいは「コピー」することもできます。「上書き」オプションもあるため、投稿やコメントなどを別のサイトに移行する簡易的な方法として使えます。
テーブル、ビュー、ルーチン、イベントの作成
Adminerは新しいテーブル、ビュー、ルーチン、イベントの作成にも利用できます。

「テーブルを作成」機能では、テーブルの列やネストした値を含め、スキーマ全体を定義することができます。
上級者はAdminerの高度な機能を利用してMySQLのビューやストアドプロシージャ、関数、イベントなどを定義することもできます。

データベースのインポートとエクスポート
AdminerではMySQLデータベースを簡単にインポートできます。バックアップとして作成した「.sql」もしくは「.sql.gz」(こちらを推奨)ファイルをアップロードするだけです。この方法で、MySQLデータベースを簡単に復元できます。

同様に、Adminerでは既存のデータベースのバックアップをとるのも非常に簡単。「エクスポート」をクリックし、出力の方法、形式、その他のデータベースの設定などを選択します。エクスポートしたいテーブルを選択することもできます。

デフォルトで対応している出力方法は「開く」「保存」「gzip」、形式は「SQL」、「CSV」、「CSV;」、「TSV」です。ただし、Adminerのプラグインを使用すれば簡単にこの機能を拡張できます。これについては後ほどご紹介します。
SQLクエリを実行
Adminerでは複雑なユーザーインターフェースに苦戦することなく、簡単にSQLクエリを実行できます。「SQLコマンド」画面を開き、任意のクエリを実行するだけでOKです。

シンタックス・ハイライトにご注目ください。Adminerではハイライト表示のSQLキーワードが公式ドキュメンテーションにリンクされています。
クエリを実行する前に、列に上限を設けたり、エラーが発生した場合に停止するよう設定したり、エラーの場合のみアウトプットを表示するようにしたり、全てが思いのままです。
ユーザー権限の表示と作成
Adminerではデータベースに対する独自の権限を設定しながら、新たなユーザーを作成することもできます。そこまで活用頻度の高くない機能かもしれません。しかし、新しいユーザーを作成しなければならない局面では、これで簡単に対応できます。


豊富なカスタマイズオプション
デフォルトのAdminerクラスを使用することで、カスタムコードをAdminerのデフォルトの機能より優先させることができます。そのためには、Adminerクラスに任意の値を返すadminer_object関数を定義します。
例えば、画面のタイトルやヘッダーに表示される名前を変更したい場合、次のコードを記述します。
<?php
function adminer_object() {
class AdminerExtender extends Adminer {function name() {
// your custom name for title & heading
return 'Adminer for Kinsta';
}
}
return new AdminerExtender;
}
include './adminer-4.7.8.php';
すると、ヘッダー部分に指定した任意の名前(ここでは「Adminer for Kinsta」)が表示されます。

Adminerの拡張機能を利用すると他にもたくさんのことができます。Adminerの拡張機能の詳細については公式サイトのAPIリファレンスページをご覧ください。
Adminerのプラグイン
Adminerのプラグインを利用してAdminerのデフォルトの機能を簡単に拡張できます。
例えば、データベースをXML形式でエクスポートしたい場合、Adminerのdump-xmlプラグインをインストールします。同様に、データベースをZIPファイルでエクスポートしたい場合は、dump-zip拡張機能を利用します。

公式サイトには人気Adminerプラグインが掲載されています。Adminerプラグインのセットアップ方法、使用方法もここから確認できます。
Adminerのテーマ
Adminerの素晴らしい点の1つはテーマが選べるところ。公式サイトですぐに使えるデザインテンプレートがいくつか公開されています。

Adminerのテーマ利用方法はこちら。使いたいテーマのadminer.cssファイルを、adminer.phpの格納されているディレクトリに入れる。
たったのこれだけです。

上記の例はAdminer公式サイトにあるHydraというテーマです。マテリアルデザインをベースとしたダークなAdminerテーマとなっています。

他にもAdminer Bootstrap-Like DesignやAdminer Theme by pematonなどがおすすめです。これらのテーマをテンプレートとして、CSSファイルを変更することで好みに合わせて調整することができます。
AdminerとphpMyAdmin
Adminerの様々な機能をご紹介してきましたが、ここからはAdminerと業界トップのphpMyAdminを比較していきたいと思います。比較対象となるポイントをざっと解説します。
AdminerとphpMyAdmin:機能の比較
phpMyAdminがサポートしているのはMySQLデータベースのみですが、Adminerは他にもたくさんのデータベースをサポートしています。ちなみに、AdminerにはMySQLのみのバージョンも存在します。
phpMyAdminでテーブルを編集、作成する作業はAdminerと比べて面倒です。データを一括で選択し、同時に編集できる機能の操作感はAdminerの方が優れています。この点においてはphpMyAdminが物足りなく感じるでしょう。
Adminerから派生した別のツールであり、データベースの編集に特化したAdminer Editorも要チェックです。一度に操作できるデータベースは1つで、これを利用するには別のデータベースと接続する必要があります。
一方、phpMyAdminの方が優れている部分もあります。例えば、Adminerよりも多くの言語とエクスポートの形式に対応していることなど。また、たくさんのユーザーを抱えているため、問題が発生した場合も大規模なコミュニティの助けを借りることができます。
AdminerとphpMyAdmin:セキュリティ
Adminerは「開発においてセキュリティが最重要事項」であると宣言しています。例えば、Adminerではバックエンドにパスワードを設定することなくデータベースへのアクセスをブロックします。また、接続のレート制限を設けることで、ブルートフォースアタックや、SQLインジェクションから保護しています。
Adminerはプラグアンドプレイの設計となっているため、必要なくなった際には、すぐさまサーバーから削除することができます。将来的にまた使用したくなった場合も、簡単に再アップロード可能。phpMyAdminではこれほど簡単にはいきません。
Adminerのlogin-sslプラグインを使用すると、SSLを使用してMySQLデータベースに接続することができます。Adminerの管理画面では最新バージョンの更新情報が通知されるため、常に最新版を利用中かどうか把握できます。
AdminerとphpMyAdmin:パフォーマンス
Juraj Hajdúch氏の行ったテストでは、Adminerの動作はphpMyAdminよりも平均で28%高速という結果が出ています。この結果が公表されたのはAdminerがリリースしてまだ間もない2009年のことですが、こちらが(今の所)唯一の客観的パフォーマンステストです。
Adminerはたった1つの軽いファイルのみで作られているため、リソースが非常に限られたサーバーであっても問題なく利用できます。
AdminerとphpMyAdmin:ユーザーエクスペリエンス
phpMyAdminとは違い、Adminerは初めてでも簡単に使えます。設定をあれこれ変更しなくても、すぐに使用可能です。
また、ユーザーインターフェースもAdminerの方が優れています。テーブルや列、値の変更もAdminerでは驚くほど簡単。データベースのインポートやバックアップの作成も同様です。
さらに、Adminerのプラグインとテーマを活用すれば、自分に合った機能やインターフェースに調整可能。これを踏まえても、ユーザーエクスペリエンスの観点ではAdminerが圧勝だと言えます。
AdminerとphpMyAdmin:ファイルサイズ
Adminerはコンパクトなデータベース管理ツールです。phpMyAdminよりも多くのデータベースの種類をサポートしているにも関わらず、そのファイルサイズは少なくともphpMyAdminの28分の1です。
Adminerの全ての機能が搭載された最新バージョン(v4.7.8)はたったの478KB。これに対し、phpMyAdminの最新バージョン(v5.0.4)は13.7MB(圧縮ファイル)。AdminerのMySQLのみのバージョン(354KB)と比較するとファイルサイズの差は歴然です。
AdminerをWordPressで利用する方法
AdminerをWordPressで利用する場合もこれといって特別なことはありません。他のMySQLデータベースで使用する場合と全く同じです。PHPファイルをダウンロードし、サーバーの任意の場所に配置し、ブラウザからアクセスしましょう。Adminerへのログインが完了すると、WordPressサイトのデータベースを見て回ることができます。
使用し終わったらAdminerのファイルはサーバーから削除することをお勧めします。サーバー上に長い間放置しておくと、データベースが脅威にさらされる可能性があります。
WordPressの管理画面からAdminerに直接アクセスできるプラグイン「ari-adminer」は、セキュリティ上の深刻な問題から2019年4月に廃止されており、現在はダウンロードできません。
AdminerをWordPressで使用するのにDevKinstaも便利です。
DevKinstaとAdminer:WordPressデータベース管理を簡単に
Kinstaの無料ローカル開発ツールであるDevKinsta。これのデータベースマネージャーにはAdminerが採用されています。

DevKinstaの管理画面で「データベースマネージャー」ボタンをクリックし、Adminerにアクセスします。

DevKinstaのデータベースマネージャーでは、今回の記事でご紹介した全てのAdminerの機能が利用できます。データベースの切り替え、テーブルの閲覧、編集、データベースの値の調整、データベースのインポート、エクスポート、SQLクエリの実行などなど。
DevKinstaを利用してローカル環境で複数のサイトを構築している場合には、Adminerの管理画面からそれぞれのサイト間でデータベースを切り替えることができます。上部左側のドロップダウンメニューから利用したいデータベースを選択するだけでOKです。
データベースマネージャーの詳細についてはDevKinstaのドキュメンテーションをご覧ください。
まとめ
AdminerはphpMyAdminの有力な代替ツールの1つです。phpMyAdminと比べてリソースの使用量が少なく、動作も快適。Adminerの開発はゆっくりではありますが、継続的に続いています。Adminerの最新バージョンではPHP8のサポートも追加されているので、将来的にも問題なく利用できます。
Adminerを試してみたい方はDevKinstaを利用しローカル環境でWordPressサイトを構築してみてください。あっという間にサイトを作成しながら、Adminerでそのデータベースを素早く確認できます。
皆さんのAdminerに関する体験談も是非お聞かせください。また、AdminerやDevKinstaを利用したデータベース管理について、ご質問などがございましたらコメント欄でお知らせください。