Edited at

HomebrewでphpMyAdminをインストールする。

More than 1 year has passed since last update.

現在PHPを学んでいるのだが、私が利用している本ではデータベースの作成にphpMyAdminがよく利用されている。

phpMyAdminとはデータベース作成のためのインターフェース。直感的にデータベースの作成ができる。今まではSQL文でデータベースを作成してきたのだが、少し使って見たくなった。(単に楽をしたい。)

MAMPやXAMPPならデフォルトで使えるんだけどな。今回はHomebrewでインストールすることにした。


インストール

Homebrewを使うのは久しぶりだったので、まずupdateから始まった。brew updateでも当然updateが行われるのだが、パッケージををインストールするときにも毎回実行されるらしい。

$ brew install phpmyadmin

Updating Homebrew...
==> Auto-updated Homebrew!
Updated 4 taps (homebrew/core, homebrew/php, homebrew/services, caskroom/cask).
==> New Formulae

#以下略

そしたら途中でこんな一文が。

Warning: php@7.1 is outdated!

To avoid broken installations, as soon as possible please run:
brew upgrade
Or, if you're OK with a less reliable fix:
brew upgrade php@7.1

php@7.1が古いのでupgradeしろよ!とのこと。update作業で対応してくれてもいいじゃん!とも思ったが、updateとupgradeは違うのだ。

参考記事:

http://mzgkworks.hateblo.jp/entry/homebrew-update-flow

そしてupgrade作業を行う。

$ brew upgrade

==> Upgrading 17 outdated packages, with result:
libtiff 4.0.9_1 -> 4.0.9_2, php@7.1 7.1.13_24 -> 7.1.16, postgresql 10.1 -> 10.3, imagemagick@6 6.9.9-31 -> 6.9.9-40, nghttp2 1.29.0 -> 1.31.0, heroku 6.15.17 -> 6.16.8, icu4c 60.2 -> 61.1, ruby-build 20171226 -> 20180329, c-ares 1.13.0 -> 1.14.0, unixodbc 2.3.5_1 -> 2.3.6, httpd 2.4.29_1 -> 2.4.33, pcre 8.41 -> 8.42, node 9.4.0 -> 9.11.1, jpeg 9b -> 9c, openssl 1.0.2n -> 1.0.2o_1, imagemagick 7.0.7-21 -> 7.0.7-28, git 2.16.1 -> 2.17.0

#以下略


Apacheの設定

先ほどbrew install phpmyadminを行ったときにこんなメッセージが出ていた。

Webserver configuration example (add this at the end of

your /etc/apache2/httpd.conf for instance) :
Alias /phpmyadmin /usr/local/share/phpmyadmin
<Directory /usr/local/share/phpmyadmin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
Then, open http://localhost/phpmyadmin

この内容をhttpd.confに追記してからhttp://localhost/phpmyadminでphpMyAdminを起動してくださいね、とのこと。指示通り、上記のAlias〜</Directory>部分httpd.confにコピペする。

phpMyAdminの場所である/usr/local/share/phpmyadminも覚えておこう。


phpMyAdminの設定

最後にphpmyadmin.config.inc.phpを編集する。書き替え部分は以下の箇所だ。

後に、この作業は本来config.inc.phpで行うと気が付く・・・

$cfg['blowfish_secret'] = '適当な文字列';

#以下略

/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';

#以下略

#以下は全てコメントアウトを外すだけ

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

#以下略

参考記事:

https://soarcode.jp/posts/55


起動する

まずはApacheとMySQLを起動する。

$ sudo apachectl start

Password:
$ mysql.server start
Starting MySQL
SUCCESS!

そしたらブラウザを立ち上げhttp://localhost/phpmyadminへアクセスする。これで起動するはず・・・!

ログインについては、以前SQL文で設定したユーザーとパスワードがあったので、それを利用した。

ログインすると、今まで作成したデータベースが左側に表示されている。これからはphpMyAdminから操作が可能だ!


そう思ってたら・・・エラー発生

ログイン後、2つのエラーメッセージが出てしまう・・・


その1

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。 

代わりにデータベースの操作タブを使って設定することもできます。

これは以下のコマンドを実行し、phpMyAdminの設定の保存場所を指定する必要がある。もちろんphpMyAdminから操作を行うことも可能だ。

$ mysql -u ユーザー名 -p < /usr/local/share/phpmyadmin/sql/create_tables.sql

参考記事:

https://soarcode.jp/posts/55

https://www.dbonline.jp/phpmyadmin/install/index3.html


その2

設定ファイルの中に記述されているパスフレーズ(blowfish_secret)が短すぎます。

これは、先ほど設定を変えたphpmyadmin.config.inc.php$cfg['blowfish_secret'] = '適当な文字列';の文字列を32文字以上に設定すると解決する。

参考記事:

https://www.dbonline.jp/phpmyadmin/install/index4.html


phpmyadmin.config.inc.phpとconfig.inc.php

phpmyadmin.config.inc.phpで行った作業は、本来はconfig.inc.phpで行うものらしい・・・しかし、phpmyadmin.config.inc.phpの内容がconfig.inc.phpへ反映されていた。

2画面で確認したのだが、どうやら/usr/local/share/phpmyadmin.config.inc.php/usr/local/share/phpmyadmin/config.inc.phpは片方を変更すると、即座にもう一方へ内容が反映されるらしい。

理由は正直よくわからない・・・


おまけ

phpMyAdminとSQL文の比較についてもいずれ書いてみる。