2026年6月18日
2026年6月18日
WordPressのデータベースをAdminerで管理する方法:安全な使い方と設置手順
Adminer は、PHP ファイル1つで動くデータベース管理ツールです。phpMyAdmin と同じように、ブラウザーからテーブルの閲覧、SQL の実行、エクスポート・インポートができます。ファイル1つなので、必要なときだけ置いて、終わったら消す使い方がしやすいのが特徴です。この記事では、WordPress のデータベースを Adminer で扱う手順を、安全な使い方を中心に説明します。
Adminer の情報は公式サイト adminer.org に基づきます。2026年11月時点の最新版は 6.3.0(2026年11月3日公開)で、MySQL・MariaDB・PostgreSQL・SQLite などに対応し、PHP 5.4 以降で動作します。
使う前に知っておくこと
データベース管理ツールを公開サーバーに置くと、それ自体が攻撃の入口になります。Adminer の公式サイトでも、IP アドレスの制限や Web サーバーでのパスワード保護を行うこと、使い終わったら削除すること、新しい版が出たら更新することが案内されています。過去の版には SSRF などの脆弱性があり、修正されています。
そのため、この記事では次の順に方法を紹介します。
| 方法 | サーバーに置くもの | 向いている場面 |
|---|---|---|
| A. SSH トンネルで手元から接続 | 何も置かない | SSH が使えるサーバー(VPS・クラウドなど) |
| B. サーバーに一時的に置く | 制限をかけた Adminer | SSH のポート転送が使えない環境 |
| C. Docker の開発環境で使う | 開発環境のみ | ローカル開発 |
なお、Adminer はパスワードの無いデータベースユーザーでのログインを受け付けません。また、ログイン試行の回数を制限しています。
接続情報を確認する
WordPress が使っているデータベースの接続情報は wp-config.php に書かれています。
| 定数・変数 | 意味 |
|---|---|
DB_NAME |
データベース名 |
DB_USER |
ユーザー名 |
DB_PASSWORD |
パスワード |
DB_HOST |
データベースサーバー(localhost など) |
$table_prefix |
テーブル名の接頭辞(既定は wp_) |
WP-CLI が使える場合は、次のコマンドで確認できます。
wp config get DB_NAME
wp config get DB_USER
wp config get DB_HOST
wp config get table_prefix
MySQL の root ユーザーではなく、WordPress 用のユーザー(DB_USER)で接続すれば、操作できる範囲を WordPress のデータベースに限れます。
方法A: SSH トンネルで手元から接続する
サーバーには何も置かず、手元の PC で Adminer を動かし、SSH のポート転送でデータベースにつなぎます。手元の PC に PHP(mysqli または pdo_mysql 拡張を有効にしたもの)と SSH クライアントが必要です。
1. Adminer を手元にダウンロードする
MySQL / MariaDB だけを使うなら、MySQL 専用版で十分です。公式サイトの latest-mysql.php は、常に最新版の MySQL 専用版を指します。
mkdir ~/adminer && cd ~/adminer
curl -L -o adminer.php https://www.adminer.org/latest-mysql.php
2. SSH でポート転送する
別のターミナルで次を実行し、開いたままにします。手元の 3307 番ポートへの接続が、サーバーから見た 127.0.0.1:3306 に転送されます。
ssh -N -L 3307:127.0.0.1:3306 user@server.example.com
DB_HOST が localhost 以外(別のデータベースサーバー)の場合は、127.0.0.1 の部分をそのホスト名に置き換えます。
3. Adminer を起動してログインする
PHP の組み込みサーバーで Adminer を起動します。127.0.0.1 を指定しているので、手元の PC 以外からは接続できません。
cd ~/adminer
php -S 127.0.0.1:8080 adminer.php
ブラウザーで http://127.0.0.1:8080/ を開き、ログイン画面に次のように入力します。
- サーバー:
127.0.0.1:3307 - ユーザー名:
DB_USERの値 - パスワード:
DB_PASSWORDの値 - データベース:
DB_NAMEの値
作業が終わったら、組み込みサーバーと SSH を Ctrl+C で止めます。
接続できない場合は、データベースユーザーが接続元として localhost しか許可されていない、SSH のポート転送が禁止されている、といった原因が考えられます。共用のレンタルサーバーでは SSH のポート転送が使えないことがあるため、その場合は方法Bか、サーバー会社が提供する phpMyAdmin を使います。
方法B: サーバーに一時的に置く
SSH のポート転送が使えない場合は、推測されにくい名前のディレクトリに Adminer を置き、IP アドレスとパスワードで制限します。以下は Apache 2.4 の例です。
1. ディレクトリを作って Adminer を置く
cd /var/www/html
mkdir dbadmin-7f3k9q
curl -L -o dbadmin-7f3k9q/index.php https://www.adminer.org/latest-mysql.php
dbadmin-7f3k9q は例です。推測されにくい名前に変えてください。WordPress の .htaccess の書き換えルールは、実在するファイルやディレクトリへのアクセスには適用されないため、このディレクトリはそのまま開けます。
2. Basic 認証のパスワードファイルを作る
パスワードファイルは、Web から見えない場所に作ります(Ubuntu では apache2-utils パッケージに htpasswd が含まれます)。
sudo htpasswd -c /etc/apache2/.htpasswd-adminer adminuser
3. IP アドレスとパスワードの両方で制限する
dbadmin-7f3k9q/.htaccess を次の内容で作ります。203.0.113.10 は自分の接続元 IP アドレスに置き換えます。
AuthType Basic
AuthName "Restricted"
AuthUserFile /etc/apache2/.htpasswd-adminer
<RequireAll>
Require ip 203.0.113.10
Require valid-user
</RequireAll>
.htaccess で認証を使うには、Apache の設定でこのディレクトリに AllowOverride AuthConfig(または All)が許可されている必要があります。設定後、別の回線(スマートフォンの通信など)から開いて 403 になること、自分の回線ではパスワードを求められることを確認します。HTTPS で開き、パスワードが平文で流れないようにしてください。
Nginx の場合は、location で同じ制限をかけます。手順は Nginx でベーシック認証を設定する方法 を参照してください。Apache の詳細は Apacheでベーシック認証を設定する方法 で説明しています。
4. 使い終わったら削除する
rm -rf /var/www/html/dbadmin-7f3k9q
置いたままにすると、制限の設定ミスや Adminer の脆弱性の影響を受け続けます。作業が終わったらその日のうちに削除します。
方法C: Docker の開発環境で使う
Docker Compose で WordPress を動かしている開発環境なら、公式の adminer イメージを追加できます。db は同じ Compose ファイル内のデータベースのサービス名です。
services:
adminer:
image: adminer
ports:
- "127.0.0.1:8080:8080"
depends_on:
- db
http://127.0.0.1:8080/ を開き、サーバーに db(サービス名)を入力してログインします。
Adminer でよく行う作業
作業前にエクスポートする
データを変更する前に、メニューの「エクスポート」でバックアップを取ります。「出力」でファイルとして保存する形式を選び、「形式」は SQL を選びます。大きなデータベースはブラウザー経由だと時間切れになることがあるため、WP-CLI が使えるなら wp db export の方が向いています(WP-CLIのwp db exportでWordPressのデータベースを書き出す方法)。
SQL を実行する
メニューの「SQLコマンド」から SQL を実行できます。以下は接頭辞が wp_ の場合の例です。自分の環境の接頭辞に合わせてください。
自動読み込み(autoload)されるオプションのうち、大きいものを確認します。WordPress 6.6 以降は autoload の値に on や auto なども使われるため、両方を対象にしています。
SELECT option_name, LENGTH(option_value) AS size
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto', 'auto-on')
ORDER BY size DESC
LIMIT 20;
管理者権限を持つユーザーを一覧にします。wp_capabilities の wp_ も接頭辞に合わせます。
SELECT u.ID, u.user_login, u.user_email
FROM wp_users u
JOIN wp_usermeta m ON m.user_id = u.ID
WHERE m.meta_key = 'wp_capabilities'
AND m.meta_value LIKE '%administrator%';
ドメイン変更の置換は SQL で行わない
サイトの URL を変えるときに、SQL の REPLACE で文字列を一括置換すると、シリアライズされたデータ(文字数を含む形式で保存された設定など)の文字数が合わなくなり、設定が読めなくなることがあります。URL の置換は WP-CLI の wp search-replace を使ってください(WP-CLIのsearch-replaceでURLや文字列を安全に一括置換する方法)。
インポートする
メニューの「インポート」から SQL ファイルを読み込めます。アップロードできるサイズは PHP の upload_max_filesize と post_max_size に制限されます。大きなファイルは wp db import など、サーバー上で読み込む方法を使います。
注意点
- データを変更・削除する操作は、元に戻せません。作業前のエクスポートを習慣にしてください。
- Adminer は新しい版が出たら更新します。方法Aでは手元のファイルを、方法Bでは設置のたびに最新版をダウンロードします。
- 本番のデータベースを直接編集するより、まずステージングで試してから本番に同じ操作を行う方が安全です。
- データベースの最適化や不要データの整理は WordPressのデータベースを最適化する方法 を参照してください。
まとめ
- Adminer は PHP ファイル1つのデータベース管理ツールで、WordPress の
DB_USERとDB_PASSWORDでログインして使う。 - いちばん安全なのは、サーバーに置かず、SSH のポート転送と手元の PHP 組み込みサーバーで使う方法。
- サーバーに置く場合は、推測されにくいディレクトリ名、IP 制限と Basic 認証、HTTPS を組み合わせ、使い終わったら削除する。
- 変更前にエクスポートし、URL の置換は SQL ではなく
wp search-replaceで行う。
関連記事: