現在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文の比較についてもいずれ書いてみる。