Debian 9 Stretch を新規インストールしたNginx WEBサーバーにphpMyAdminをインストールする方法です。前提として、こちらの記事(Debian 9 StretchでNginx+PHP7.0+MariaDBをインストール)の通り構築した自宅サーバーでのインストール方法です。
Stretchでは、MariaDBが標準のSQLサーバーになりましたが、新規インストールしたMariaDBではunix_socketプラグインありのrootユーザーが作成されるので、phpMyAdminではrootでログインできません。代わりにunix_socketプラグイン無しのログイン可能なユーザーを作成します。
このページの目次
unix_socket プラグイン
新規インストールしたMariaDBのrootは、パスワード無し、unix_socketプラグイン有りで作成されます。(Jessieからのアップグレードの場合を除く)
OSのrootで直接操作するしか、DBのrootも使えない仕様のようです。その方がセキュリティ的に安全だしパスワード無しで操作も簡単ということのようです。そのため、外部のphpMyAdminからはrootでログインできないようになっています。
DBのrootがunix_socketプラグインで作成されているかどうかは、下記コマンドで確認できます。
# mysql -u root MariaDB [(none)]> use mysql MariaDB [mysql]> select Host,User,plugin from mysql.user where User='root'; +-----------+------+-------------+ | Host | User | plugin | +-----------+------+-------------+ | localhost | root | unix_socket | +-----------+------+-------------+ 1 row in set (0.01 sec) MariaDB [mysql]> exit
インストール
phpmyadminをインストールします。途中でWEBサーバーと連携するか聞いてきますが、nginxはリストに出てこないので未選択のまま進みます。phpmyadmin用のデータベースも不要なので<いいえ>で進みます。
# apt install phpmyadmin
ユーザー作成
rootの代わりのユーザーを作成します。全権限を与えていますが、それでもrootと全く同じ権限を与えるのは無理なようです。
dbuserというユーザーをパスワード:password で作成してphpmyadmin用のユーザーにする例がこちらです。
# mysql -u root MariaDB [(none)]> use mysql MariaDB [mysql]> grant all on *.* to "dbuser"@localhost identified by 'password'; MariaDB [mysql]> exit
シンボリックリンク作成
ブラウザーで、サイトurl~/phpmyadmin と入力してphpMyAdminを開くことができるように、シンボリックリンクを作成します。
下記は、nginxの初期公開ディレクトリで設定した例です。
# ln -s /usr/share/phpmyadmin /usr/share/nginx/html
phpmyadminを隠す
セキュリティ的にサイトurl~/phpmyadmin で開くままだと、誰でも推測でログイン画面を出すことができるので心配な場合、サイトurl~/origina-myadmin-urlというように、URLを変更する方法です。作成したシンボリックリンクの名前を変更します。
# cd /usr/share/nginx/html # mv phpmyadmin origina-myadmin-url
WordPressのユーザーが作れない
以上で、Debian StretchのMariaDBでphpMyAdminをインストールできました。しかしこれでは、WrodPressを新規インストールするときに、新規データベースは作成できますが、データベース固有のユーザーに権限譲渡ができないです。
そうなると、OSにrootでログインしてコマンド操作することになり、phpMyAdminはいらない気もします。それでも、それ以外の操作をブラウザーでGUIで利用したい場合もあるでしょう。