以前の記事で、MySQLサーバをインストールしたが、WebブラウザからMySQLを操作できるツール「phpMyAdmin」を使えるようにする。
尚、MySQL,Apache2とPHP は事前にインストールしておく必要があるので関連記事を参照。
前置き
aptからのphpmyadminインストールで、パッケージのウィザード設定で、何故か下記画面エラーとなりインストールが完了できない。これは、パスワードポリシーに合わないパスワードというもの。MySQLサーバ側の設定を変更してパスワードポリシーのレベルを下げたり、パスワードを複雑にしたり、色々と試行錯誤してみたが、どうにも解決できない。
仕方ないので、このウィザードでの設定は使わずインストール完了させて、手動でphpmyadminユーザを設定する手順とする。
phpmyadminのインストール
phpMyAdmin
パッケージのインストール。
$ sudo apt install phpmyadmin
Webサーバの種類を聞かれるので「apache2」をスペースキーで選択して [了解] する。(項目の移動は、TABキー)
dbconfig-commonで設定しますか?と聞かれるので「いいえ」を選択する。
phpmyadminユーザの設定は、以下、手動で設定する。
phpmyadminユーザの設定
mysqlのコマンドで、phpmyadminユーザ作成する。
$ sudo mysql -u root -p
mysql> CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'yourpassowrd';
mysql> GRANT ALL ON *.* TO 'phpmyadmin'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit
設定ファイルの変更
/etc/phpmyadmin/config-db.php
ファイルの変更&確認。
$dbuser='phpmyadmin';
$dbpass='yourpassword';
/etc/dbconfig-common/phpmyadmin.conf
ファイルの変更&確認。
dbc_dbtype='mysql'
dbc_dbuser='phpmyadmin'
dbc_dbpass='yourpassowrd'
apache2サーバの設定
下記の/etc/apache2/conf-available/phpmyadmin.conf
のシンボリックリンクが自動設定されているので、特に設定する必要ない。
念のため、Apacheの再起動。
$ sudo service apache2 restart
WebブラウザからphpMyAdminにアクセス
http://<サーバIP>/phpmyadmin/
下記のログイン画面が表示される。
登録したユーザ名「phpmyadmin
」と「パスワード」を入力。下記画面が表示される。
起動したが、「拡張機能が無効になっています。」となっているので [こちら] を押す。
データベースを [作成] を押す。管理データベースが作成される。
再度起動ログインする。
無事に起動した。
phpMyAdminへのアクセスを保護する
phpMyAdminは、直接Webアクセスできて便利ではあるが、セキュリティーに配慮して以下の対策をする。
/etc/phpmyadmin/apache.conf
ファイルを設定変更する。
$ sudo nano /etc/phpmyadmin/apache.conf
アクセスURLの変更
デフォルトのままでは、アクセスURLがすぐに想像できるので、下記設定変更する。
#Alias /phpmyadmin /usr/share/phpmyadmin
Alias /任意の名前 /usr/share/phpmyadmin
Webブラウザからは、下記URLでアクセスする。
http://<サーバIP>/任意の名前/
Apacheによる認証を追加
ログイン画面の前に、Apacheによるパスワード認証を行う。
尚、外部からのアクセスはパスワード認証し、ローカルネットワークからは認証なしでアクセス出来るようにする。
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
#Limited to SSL connection
#SSLRequireSSL # <== SSLに限定する場合はコメントはずし有効にする
# ↓↓↓以下の内容を追加↓↓↓
# Basic authorization
AuthType Basic
AuthName "Please Enter Your ID and pass"
AuthUserFile /etc/apache2/.htpasswd
require valid-user
# Pass local LAN authorization
Satisfy Any
Order Allow,Deny
Allow from 192.168.
- IPv6アドレスも許可する場合は、「
Allow form 240b:aaaa:bbbb:cccc::/64
」等の行を追加。 - パスワード入力が盗聴されないよう、SSL通信(
https://
)にしておいた方が安心。
尚、パスワードファイルの生成手順は、下記記事参照。
Apacheの再起動
上記設定を変更したら、Apacheサービスを再起動して設定を反映させる。
$ sudo service apache2 restart
補足
- Linux + Apache + MySQL + PHPの 環境を、頭文字をとって「LAMP」と呼ぶらしい。
コメント