Linuxを使ってWebアプリケーションを開発している場合、多くの場合、データベースに付属するコマンドラインのMySQL管理ツールに頼らざるを得なくなります。これらのツールは非常に強力ですが、経験の浅い開発者にとっては扱いにくい場合があります。また、経験豊富な開発者であっても、長々としたコマンドを一括入力する手間を省きたい場面は少なくありません。
グラフィカルツール、特にWebベースのツールは、データベース管理作業を簡素化できます。そして、シンプルさというテーマに沿って、Adminerは驚くほどの成果をもたらします。AdminerはWebサーバーにコピーできるPHPスクリプトで、設定を一切必要とせず、主要なデータベースサーバーアプリケーションで稼働しているほぼすべてのデータベースをすぐに管理できます。
このチュートリアルでは、LAMP 環境をセットアップする方法と、その上で Adminer を起動して実行する方法について簡単に復習します。
ジャンプ先:
- Adminerをインストールするために必要なもの
- MySQLのインストール方法
- MySQLでAdminerをインストールする方法
- Adminerウェブインターフェースにアクセスする方法
- Adminerを選ぶ理由
- セキュリティに関する考慮事項
Adminerをインストールするために必要なもの
Adminerを起動するには、Ubuntu Serverのインスタンス(ここでは23.04を使用していますが、22.04や20.04でも構いません)とsudo権限を持つユーザーが必要です。これで完了です。さあ、データベースマジックを始めましょう。
参照: Ubuntu Server 20.04 から 22.04 へのアップグレードの基本。
MySQLのインストール方法
MySQLデータベースを使ってAdminerを設定する方法を説明します。すべてを確実にインストールするために、LAMPスタック(Linux、Apache、MySQL、PHP)のルートを使用します。
- まず次のコマンドを実行します:
sudo apt-get install lamp-server^ -y
- インストールが完了したら、次のコマンドで MySQL および Apache サービスを開始して有効にします。
sudo systemctl enable --now apache2 sudo systemctl enable --now mysql
- 次に、MySQL インストールを保護し、次のコマンドを使用して管理者ユーザーにパスワードを付与します。
sudo mysql_secure_installation
プロンプトに従って MySQL を適切に設定することもできますが、その方法についてさらに詳しい情報が必要な場合は、「MySQL と MariaDB の設定」を参照してください。
MySQLでAdminerをインストールする方法
AdminerはPHPスクリプトとして実行され、wget
ユーティリティを使ってLinuxサーバーのウェブルートディレクトリに直接ダウンロードできます。lamp-server
上記のパッケージを使ってApacheをインストールした場合、デフォルトのウェブルートディレクトリは/var/www/htmlで、このディレクトリの所有者はrootです。これらのデフォルト設定を変更しない限り、Adminerをダウンロードしてインストールする必要がありますsudo
。この記事の執筆時点でのAdminerの最新バージョンは4.8.1です。
以下のコマンドは、/var/www/html ディレクトリに切り替えて、Adminer PHP コードを直接ダウンロードする方法を示しています。
cd /var/www/html sudo wget https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1.php
上記のリンクが機能しない場合は、Adminerのウェブサイトを参照して最新バージョンへの正しいリンクを見つけてください。すべてが正常に機能している場合は、図Aのような画面が表示されます。
図A

Adminerウェブインターフェースにアクセスする方法
信じられないかもしれませんが、インストールはこれで完了です。ただし、MySQL管理者の認証情報を使ってログインすることはできません。代わりに、データベース作成権限を持つ別のユーザーを作成する必要があります。その手順は以下のとおりです。
- 次のコマンドで MySQL コンソールにログインします。
sudo MySQL
- 次のコマンドを使用して、新しいユーザーを作成します (dbadmin と呼びますが、好きな名前を付けることができます)。
'PASSWORD' で識別されるユーザー 'dbadmin'@'%' を作成します。
ここで、PASSWORD は強力かつ一意のパスワードです。
- 次のようにして、ユーザーにグローバル権限のリロードを付与します。
'dbadmin'@'%' に *.* での CREATE USER、RELOAD 権限を付与します。
- 必要な権限を付与するには、次の操作を行います。
GRANT OPTION 付きで `db`.* のすべての権限を 'dbadmin'@'%' に付与します。
上記のコマンドでは、db の両側にシングルクォートではなくバッククォートが使用されていることに注意してください。シングルクォートを付けたままコマンドを実行すると、エラーが発生します。
- 最後に、次のようにしてユーザーに作成権限を付与します。
'dbadmin'@'%' に *.* の CREATE、CREATE USER、SELECT、RELOAD 権限を付与します。
- 権限をフラッシュして終了します:
権限をフラッシュします。 出口
ウェブブラウザで
http://SERVER/adminer-4.8.1.php
ここで、SERVER はホスティング サーバーの IP アドレスであり、管理者ログイン ウィンドウが表示されます (図 B )。
図B

この時点で、管理者として望む通りにデータベースを作成および変更できるはずです(図C)。アクセスは、データベースへの接続に使用しているアカウントの権限によって制限されることに注意してください。
図C

MySQLデータベース上でAdminerを起動して実行するのは、実に簡単です。このプラットフォームを、作業に必要なデータベースで試してみて、作業が格段に楽になるかどうか確かめてみてください。
Adminerを選ぶ理由
Adminer は、Web ベースのデータベース管理ツールに期待される機能を当然提供します。
- ユーザー名とパスワードによるデータベース サーバー接続。
- データベースの作成。
- フィールド、インデックス、外部キー、テーブル トリガー別にリストします。
- テーブルの名前、エンジン、照合、自動増分、コメントを編集します。
- 列の名前、タイプ、照合、コメント、デフォルト値を変更します。
- テーブルまたは列を追加および削除します。
- 検索、集計、並べ替え、制限の結果を使用してテーブルにデータをリストします。
- レコードを挿入、更新、削除します。
- ファイル転送を介してすべてのデータ タイプと BLOB をサポートします。
- 任意の SQL コマンドを実行します。
- プロセスを表示および終了します。
- ユーザーと権限を表示および編集します。
Adminerは、MySQL以外にも、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDBなど、多くのリレーショナルデータベース管理システムをサポートしている点で、他の多くのグラフィカルデータベース管理ツールを凌駕しています。この点において、AdminerはWebベースのデータベース管理ツールの利便性と、簡単にインストールできる単一のツールで複数のデータベースシステムを管理できる利便性を兼ね備えています。
セキュリティに関する考慮事項
残念ながら、Webベースのデータベース管理ソリューションによってもたらされる利便性は、重大なセキュリティリスクを伴います。これは、Webベースのデータベース管理ソリューションが、データベースに課せられるネットワークベースの制限を回避してしまうためです。
プレミアム: このデータベース エンジニア採用キットをご覧ください。
例えば、公開ウェブサーバー上でApacheを使ってWordPressサイトを運用し、そのサーバーはプライベートサーバー上で稼働するMySQLサーバーを利用しているとします。この場合、MySQLにはWordPressサーバーからのみアクセスできるユーザーアカウントが設定されています。たとえ誰かがこのアカウントのユーザー名とパスワードを知っていたとしても、MySQLに組み込まれたセキュリティ機能によってアクセスは許可されません。
Adminer がインストールされているウェブサーバーへのアクセスは、必ずパブリックアクセスから制限してください。そうしないと、Adminer がアクセスできるデータベースへの管理者権限が世界中の誰でも取得できてしまいます。このようなサーバーを VPN やファイアウォールで保護し、アクセス権限を持つユーザーのみにアクセスを適切に制限することを検討してください。