>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
PHP

phpMyAdminや重量級GUIクライアントがあるのに、なぜAdminerを使うのか

手頃なVPSにWebアプリケーションをデプロイしたことのある人なら、このRoutineを覚えているでしょう。データベース内のテーブルを急いで確認したり、1行だけを修正したりする必要があります。DBeaverのようなデスクトップクライアントをインストールしてSSHトンネルを設定するのは時間がかかります。phpMyAdminをアップロード声も避けたい——アーカイブには何千もの小さなファイル、設定ファイルの数々、展開後のコードがメガバイト単位になります。

このような状況で、Adminerが活躍します——チェコの開発者Jakub Vránaによるプロジェクトで、GitHub上で15年以上前から公開されています。このツールのコンセプトはシンプルです:単一のPHPファイルに収まるフル機能のデータベースWeb管理パネルです。

Table structure

動作の仕組み

約400キロバイトの単一ファイル adminer.php をダウンロードします。サーバーのWebフォルダにアップロードしてブラウザで開くだけでインストール完了です。ログインフォームが表示され、DBMS、ホスト、ユーザー名、パスワードを選択できます。

Adminerのコンパイル済みバージョンは事実上あらゆる環境で動作します。必要なのはPHP 5.3のみで、2000年代後半のサーバーではまだ一般的でした。リポジトリのソースコードから自分でビルドする場合は、PHP 7.4以上が必要です。

歴史的にMySQLに特化したphpMyAdminとは異なり、Adminerは最初から複数のDBMSをサポートしています:

  • MySQLおよびMariaDB
  • PostgreSQL
  • SQLite(バージョン2および3)
  • MS SQL
  • Oracle
  • CockroachDB

公式プラグインを接続すると、このリストはさらに拡張されます。ClickHouse、Redis、Elasticsearch、MongoDBのサポートが利用可能になります。

単一ファイル形式が今も便利な理由

アプリケーション全体を単一スクリプトにまとめることで、実用面で明確な利点があります。

まず、デプロイの速度です。ファイルは wget または curl を使ってサーバーコンソールから直接1秒以内にダウンロードできます。アーカイブの展開、設定用の補助テーブルの作成、設定ファイルの変更は不要です。

次に、リソース効率です。スクリプトはフレームワークなしで書かれています。512MBのRAMしかない最も弱い仮想サーバーでもページが即座に読み込まれます。

3番目に、ダンプのインポートとエクスポート時にユーティリティはメモリを丁寧に処理します。phpMyAdminがメモリ制限やタイムアウトエラーでクラッシュする場所で、Adminerは通常这些问题なく動作します。

リポジトリの中身

リポジトリのソースコード vrana/adminer を見ると、プロジェクトは見た目よりもはるかに興味深い構成になっていることがわかります。HTMLとPHPが混在した400キロバイトのコードだけではありません。

ソースコードはモジュール分割されています:

  • adminer/ — メインインターフェースコード
  • editor/ — 軽量なAdminer Editorバージョン
  • compile.php — すべてのコンポーネント、スタイル、言語ファイルを最終的なモノリシックファイルにアセンブルするビルドスクリプト
  • lang.php — ローカライゼーション更新ユーティリティ
  • tests/ — ブラウザ検証用のエンドツーエンドPlaywrightテスト

ビルドスクリプトは空白を削除し、コメントを削除して、CSSを圧縮します。結果は、外部依存関係なしでデプロイできるコンパクトなファイルです。

エンドユーザー向けの別バージョン

リポジトリには2番目の製品——Adminer Editorが含まれています。

典型的なシナリオを考えてみましょう:データベースレコードの編集へのアクセスをマネージャーやコンテンツマネージャーに付与する必要があります。しかし、テーブルの構造やインデックスを見せたり、任意のSQLクエリを実行させたくない場合があります。

Adminer Editorはまさにこの問題を解決します。データベースの上にシンプルなインターフェースを提供します。DDL変更ボタンや管理設定はありません。ユーザーはレコードの追加、編集、検索のための Familiar なフォームのみを見ます。必要に応じて、小さなPHPクラスを通じてEditorをプロジェクトのルールに簡単にカスタマイズできます。

セキュリティと注意点

ユーティリティの使用は便利ですが、本番サーバーで adminer.php を公にアクセス可能なままにしておくのは危険です。ボットは常にWebサイトをスキャンして、adminer.php や db.php のような標準的なファイル名 adminer.php を見つけ、データベースパスワードのブルートフォースを試みます db.php

サーバーを保護するには、シンプルなガイドラインに従ってください:

  1. デバッグ完了後にすぐにファイルを削除してください。
  2. スクリプトをランダムな文字列に名前変更してください(例: db_access_9281.php)。
  3. HTTP Basic AuthまたはIP制限を使用して、Webサーバーレベルでファイルへのアクセスを制限してください。

もう1つの考慮事項は、ユーティリティのデフォルトの外観です。箱から出した状態のデザインは2008年の懐かしいレトロな見た目をしていますが、プロジェクトの公式カタログからサードパーティのCSSテーマを接続することで簡単に修正できます。

誰がこのツールを見つけるか

Adminerは開発者のツールキットにおいて優れた位置を占めています。開発サーバーでの素早いデバッグ、SQLiteファイルの操作、Webインターフェースのみにサーバーアクセスが制限されている状況で不可欠です。

このプロジェクトはGitHubで7500以上のスターを獲得しており、作成者によって引き続きメンテナンスされています。シンプルでミニマリストなアーキテクチャがどのように長年関連性を保つことができるかを示す良い例です。

関連プロジェクト