PhpMyAdmin は、MySQL で作成されたデータベース全体を作成、保存、編集できる GUI (グラフィック ユーザー インターフェイス) です。
このガイドでは、phpMyAdmin をインストールする方法と、Linux Ubuntu 18.04 でのアクセスを保護する方法について説明します。
まず、SSH 接続を介してサーバーに接続します。まだ行っていない場合は、ガイドに従って SSH プロトコルに安全に接続することをお勧めします。ローカル サーバーの場合は、次の手順に進み、サーバーのターミナルを開きます。phpMyAdmin のインストール
PhpMyAdmin は標準の Ubuntu リポジトリにあります。
最初に apt インデックスを更新してから、phpMyAdmin をダウンロードしてインストールします:
$ sudo apt update
$ sudo apt install phpmyadmin php-mbstring php-gettext
Y と入力し、Enter キーを押して確定します。
次の画面が表示されます:
ここで apache を選択しますが、赤いダッシュで apache 2 が選択されていないことに注意してください。これを選択するには、スペースバーを押してから Enter キーを押します。スペースバーを押さないと、インストールに必要なファイルが転送されません。
Enter キーを押すと、次の画面が表示されます:
[はい] を選択し、Enter キーを押します。
管理者データベースのパスワードを入力する必要があります。新しいパスワードを入力し、Tab を押して [OK] を選択し、Enter を押します。
アプリケーションのパスワードを入力して確認します。
前と同じように、新しいパスワードを入力し、Tab キーを押して [OK] を選択し、Enter キーを押します。
パスワードを確認してください。
インストールが完了すると、phpMyAdmin 構成ファイルがここに追加されます:
/etc/apache2/conf-enabled/phpmyadmin.conf The
行う必要があるのは、PHP mbstring 拡張機能を有効にすることだけです。そのためには、次のように入力します:
$ sudo phpenmod mbstring
すべての変更を適用するには、次のように入力して Apache を再起動します。
$ sudo systemctl restart apache2
アクセス権限の管理
phpMyAdmin を使用するには、インストール中に自動的に作成されたユーザーとしてログインしないでください。代わりに、MySQL ユーザー root として、または phpMyAdmin インターフェースを介してデータベース マネージャーとしてログインしてください。
これら 2 人のユーザーのうちの 1 つだけを構成するか、両方を構成するかを選択できます。
MySQL root アカウントのパスワードの設定
MySQL root ユーザーとしてアクセスするには、単純なパスワードの代わりに認証 auth_socket が必要です。 phpMyAdmin 経由で MySQL root としてログインするには、認証方法を変更してください。
そうするには、MySQL プロンプトを開きます
$ sudo mysql
次のように入力して、各 MySQL ユーザーの認証方法を確認します。
SELECT user, authentication_string, plugin, host FROM mysql.user;
MySQL ユーザーのすべての認証方法のリストが表示されるようになりました。ここで、root ユーザーが auth_socket 認証タイプを持っていることがはっきりとわかります。
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
認証タイプを auth_socket から mysql_native_password に変更し、パスワードを使用して root ユーザーにログインするには、次のように入力します:
ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
パスワードの代わりに、覚えておく必要のあるパスワードを入力してください。
次のように入力して、行った変更を確認します:
FLUSH PRIVILEGES;
このようにして、root ユーザーの認証方法を更新する必要があることがサーバーに通知されます。
再入力して、変更が保存されているかどうかを確認します:
SELECT user, authentication_string, plugin, host FROM mysql.user;
すべてが正しく行われた場合、root ユーザーの認証方法が変更され、表示される画面は次のようになります:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
完了したら、以前に選択したパスワードを使用して、phpMyAdmin インターフェイスで root ユーザーとして自分自身を認証します。
専用 MySQL ユーザーのパスワードを構成する
root ユーザーとしてではなく、この目的のために特別に作成されたユーザーとして phpMyAdmin にアクセスするには、作成するだけです。
これを行うには、MySQL プロンプトに再度ログインします。
root ユーザー用のパスワードベースの認証がすでに構成されている場合は、次のように入力します:
$ mysql -u root -p
root ユーザーを使用しないことにした場合は、次のように入力します。
$ sudo mysql
ここで、新しいユーザーを作成し、次のように入力して名前とパスワードを選択します:
$ CREATE USER 'username' @ 'localhost' IDENTIFIED BY 'password';
'username' と 'password' を選択したものに置き換えてください。
必要なすべての権限を新しいユーザーに付与するには、次のように入力します:
$ GRANT ALL PRIVILEGES ON *. * TO 'username' @ 'localhost' WITH GRANT OPTION;
次に、次のように入力して MySQL プロンプトを終了します。
$ exit
phpMyAdmin への初めてのアクセス
サーバーに接続するには、選択したブラウザで次の URL を使用するだけです:http:// IP-SERVER / phpmyadmin
アドレスが正しい場合、画面が表示され、ユーザー名とパスワードを入力するよう求められます。
ここで、root ユーザーまたは新しく作成したユーザーとしてログインできます。
すべてが正しく実行されると、phpMyAdmin ダッシュボードが表示されます。
外部からの攻撃に対する保護
このように構成された phpMyAdmin は、一部の人々にとって特に興味深いデータベースであるため、外部からの攻撃に対して特に脆弱です。
これらの攻撃を防ぐ最も簡単な方法は、統合された Apache 関数を使用してアプリケーション全体にアクセス ポートを追加することです。
この関数は .htaccess です。
この機能を設定するには、apache ディレクトリの .conf ファイルにアクセスしてください。
入力するには:
$ sudo nano /etc/apache2/conf-available/phpmyadmin.conf
.conf ファイル内で次のセクションを検索します:
<Directory / usr / share / phpmyadmin>
追加:
AllowOverride All
ディレクティブ AllowOverride All を追加したら、.conf ファイルを保存して閉じ、Apache を再起動してすべての変更を実装します。
これを行うには、次のように入力します:
$ sudo systemctl restart apache2
アプリケーションの .htaccess が有効になったら、新しいものを作成してください。
ファイルはアプリケーション ディレクトリにあります。
そうするには、次のように入力します:
$ sudo nano /usr/share/phpmyadmin/.htaccess
ファイルに次のように記述します:
AuthType Basic
AuthName "Reserved files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
このファイルは、認証用のダイアログ ボックスを作成するだけです。
ダイアログ ボックスの「タイトル」は「予約済みファイル」になります。この名前は自由に変更できます。悪意のあるユーザーがこの保護を迂回することに興味を持たないようにするために、非常に具体的な名前を付けないことをお勧めします。
ファイルを保存して閉じます。
パスワード ファイルを作成します。
作成するには、次のように入力します:
$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
「ユーザー名」を任意の名前に置き換えます。
パスワードを選択して確認する必要があります。パスワードを含むファイルが /etc/phpmyadmin/.htpasswd に作成されます。
今後、phpMyAdmin にアクセスする前に、すべてをより安全にするために追加のユーザー名とパスワードが必要になります。
ユーザー名とパスワードを入力すると、MySQL 認証情報を入力する通常の phpMyAdmin ログイン ウィンドウが表示されます。