FreeBSDにMariaDBでphpMyAdmin5で管理
phpMyAdminでインターネット越しに管理するのは注意が必要です.
データベースをコマンドで操作するのはとても面倒くさいし、スキルは高くなります.
WordPressで使用するには、mysqlのコマンドだけでも不自由はないかもしれませんが、コマンドを覚えるのも面倒くさいので、ここは、素直にphpMyAdminに任せた方が良いのかもしれません.
FreeBSDのpkgからphpMyAdminの検索
パッケージサーチでphpmyadminを検索してみる 2021/10
# pkg search phpmyadmin
phpMyAdmin-php73-4.9.7 Set of PHP-scripts to manage MySQL over the web
phpMyAdmin-php74-4.9.7 Set of PHP-scripts to manage MySQL over the web
phpMyAdmin-php80-4.9.7 Set of PHP-scripts to manage MySQL over the web
phpMyAdmin5-php73-5.1.1 Set of PHP-scripts to manage MySQL over the web
phpMyAdmin5-php74-5.1.1 Set of PHP-scripts to manage MySQL over the web
phpMyAdmin5-php80-5.1.1 Set of PHP-scripts to manage MySQL over the web
このサーバーではphp74で動作させていて、phpMyAdminのバージョンは5が主流になるだろうと予想できるので、phpMyAdmin5-php74-5.1.1をインストールしよう.
phpMyAdmin5のインストール
FreeBSDのpkgで さっくりとインストールしよう.
#pkg install phpMyAdmin5-php74
New packages to be INSTALLED:
php74-bz2: 7.4.24
php74-ctype: 7.4.24
php74-gd: 7.4.24
php74-session: 7.4.24
php74-xmlwriter: 7.4.24
phpMyAdmin5-php74: 5.1.1
Number of packages to be installed: 6
php74のインストールをしているので、追加されるパッケージは異なると思います.
FreeBSDのphpMyAdminのインストール先はデフォルトで
/usr/local/www/phpMyAdmin
のようです.
セキュリティのコメントがあったので下に載せときます.
SECURITY NOTE: phpMyAdmin is an administrative tool that has had several remote vulnerabilities discovered in the past, some allowing remote attackers to execute arbitrary code with the web server’s user credential.
All known problems have been fixed, but the FreeBSD Security Team strongly advises that any instance be protected with an additional protection layer, e.g. a different access control mechanism implemented by the web server as shown in the example. Do consider enabling phpMyAdmin only when it is in use.
セキュリティに関する注意:phpMyAdminは、過去にいくつかのリモートの脆弱性が発見された管理ツールであり、リモートの攻撃者がWebサーバーのユーザー資格情報を使用して任意のコードを実行できるようにするものもあります。
既知の問題はすべて修正されていますが、FreeBSDセキュリティチームは、インスタンスを追加の保護レイヤーで保護することを強くお勧めします。 例に示すように、Webサーバーによって実装された別のアクセス制御メカニズム。 phpMyAdminを使用中の場合にのみ有効にすることを検討してください。
したがって、十分に注意して使用すべきで、アクス制限等のセキュリティ対策は必要だろうと思います.
php74の拡張機能がインストールされたので php-fpmを再起動して有効にしておきます.
#service php-fpm restart
phpMyAdmin5の設定
phpMyAdminの基本設定ファイルはconfig.inc.phpファイルです.
吾輩は猫である。名前はまだない。どこで生れたか頓と見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
# less config.inc.php
—————————— config.inc.php の内容 ———————–
Skeleton configuration file -- this file is empty on a fresh installaton of phpmyadmin. Copy any settings you want to override from libraries/config.default.php or visit /phpmyadmin/setup/ to generate a basic configuration file
スケルトン構成ファイル-phpmyadminの新規インストールでは、このファイルは空です。オーバーライドする設定をlibraries / config.default.phpからコピーするか、/ phpmyadmin / setup /にアクセスして基本的な構成ファイルを生成します.
phpMyAdminの中のファイル
libraries/config.default.phpを
config.inc.phpに上書きコピーして使います.
# cp /usr/local/www/phpMyAdmin/libraries/config.default.php /usr/local/www/phpMyAdmin/config.inc.php
上書きされたか確かめてみましょう.
# ls -al | grep config
-rw-r--r-- 1 root wheel 41 Oct 8 04:30 babel.config.json
-rw-r----- 1 root www 71811 Oct 27 16:35 config.inc.php
-rw-r----- 1 root www 266 Oct 8 04:30 config.inc.php.sample
-rw-r--r-- 1 root wheel 4474 Oct 8 04:30 config.sample.inc.php
-rw-r--r-- 1 root wheel 1354 Oct 8 04:30 show_config_errors.php
config.inc.phpが新しい日付で存在するはずです.
ファイルを開いてみたほうが良いでしょう,
phpMyAdminにブラウザから開いてみる
ローカルネットワークにあるPCのwebブラウザから「 IP アドレス/phpMyAdmin/」を入力すると、下の画像のような画面が現れます.
MariaDBで登録したユーザーとパスワードを入力します.
実行ボタンをクリックすると、設定が良ければ簡単にログインできてMariaDB内のデータベースにアクセスできます.
phpMyAdmin 環境保管領域が完全に設定されていない
webブラウザからphpMyAdminにログインできると、下のようなメッセージが表示されました.
phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。
代わりにデータベースの操作タブを使って設定することもできます。
文章の「こちら」をクリックしてみる.
「phpmyadmin」データベースを作成 し、phpMyAdmin 環境保管領域をセットアップ。
文章の「作成」をクリック
phpmyadmin というデーターベースが作成され、全ての項目で 「OK」 と 「有効」 と表示されました.
暗号化 (blowfish_secret) 用の非公開パスフレーズ
設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。
blowfish : ふぐ 1993年にアメリカの暗号研究者、ブルース・シュナイアー(Bruce Schneier)氏が考案した共通鍵(秘密鍵)暗号方式、ライセンスフリー。
設定ファイル
cd /usr/local/www/phpMyAdmin
# less config.inc.php
/**
* The ‘cookie’ auth_type uses AES algorithm to encrypt the password. If
* at least one server configuration uses ‘cookie’ auth_type, enter here a
* pass phrase that will be used by AES. The maximum length seems to be 46
* characters.
*
* @global string $cfg[‘blowfish_secret’]
*/
$cfg[‘blowfish_secret’] = ”;
$cfg[‘blowfish_secret’] = ‘The maximum length seems to be 46 characters.‘; 最大で46文字のフレーズを入れろということだろう.
The maximum length seems to be 46 charactersに「**********」何かのパスフレーズを登録する
登録する文字が短いと、「設定ファイルの中に記述されているパスフレーズ(blowfish_secret)が短すぎます。」とメッセージがあります.
だいたい40文字くらい入れたら、「短すぎます」のメッセージは消えました.
クッキーに記録されるみたいなので、ログインの時に入力する必要がないので、覚えている必要はなく、適当でも良さそうですね.
phpMyAdminのインストールと設定はここで終了です.
お疲れ様でした.
インストールや設定は、やってみると難しくないのですが、何かにつまずくと、何が悪かったのか検証するのに時間を要します.
この下に、ログイン時のエラーの解決方法の参考になればと考えて、解決方法を少し付け加えました.
phpMyAdmin エラー HY000/202
自分自身のFreeBSD12.2 + MariaDB10.5 + phpMyAdmin5-php74-5の環境では、デフォルト設定では、ログイン時に下記のエラーが発生しました.
(HY000/202):Np such file or directory です.
mysqlに接続できていないようでした.
FreeBSDのpkgでインストールするとMariaDBの socket のデフォルトは、tcp4 みたいなので、チェックしてみます.
IP addressで接続しているみたいですね.
# sockstat -4 mysql
mariadbd 4139 19 tcp4 127.0.0.1:3306 *:*
この結果をふまえて、phpMyAdmin の設定ファイル phpMyAdmin/config.inc.php の内容を調べてみましょう.
#less /usr/local/www/phpMyAdmin/config.inc.php DO NOT EDIT THIS FILE, EDIT config.inc.php INSTEAD !!!
/**
* MySQL hostname or IP address
*
* @global string $cfg['Servers'][$i]['host']
*/
$cfg['Servers'][$i]['host'] = 'localhost';
ここの localhost がうまく認識できていないようでした. 127.0.0.1 に書き換えます.
$cfg['Servers'][$i]['host'] = '127.0.0.1';
hostname か IP address と書かれているので、動作すれば、どちらでも良いのだと思います.
phpMyAdmin エラー HY000/1698
(HY000/1698):Access denied for user ‘root’@’localhost’
というエラーが発生したときは、ユーザー名やパスワードが違っている可能性があります.
そのほかには、MariaDBで ルートのパスワード設定で mysql の root のパスワードをFreeBSDのパスワードと同じにして、新たな mysql のパスワードを設定しなかった場合も ログインできない可能性があります.
MuSQLもMariaDBのルートのパスワードの設定方法は、以下の方法が推奨されているようです.
# mysql_secure_installation Enter current password for root (enter for none): エンター・リターンキー Switch to unix_socket authentication [Y/n] n (FreeBSDはTCP sockがデフォルトみたいだ) Change the root password? [Y/n] Y(nと答えるとFreeBSDのrootのパスワードだが、新しいパスワードにするために Y にしよう) New password: ********** (新しいパスワードを入力) Re-enter new password: ********** (もう一度同じパスワードを入力) Password updated successfully! Reloading privilege tables.. ... Success! Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
赤いところのパスワードを [Y/n} Y にしないとFreeBSDの root の権限を持ったパスワードで mysql を動かすことになるみたいです.
ようするに、外部にOS (FreeBSD) のルートのパスワードをネットで流す危険性をphpMyAdminでは回避させているのかな.
当然、webブラウザからのアクセスは、 FreeBSDの root の権限ではないので、denied 拒否された訳みたいですね.
もう一度、mysql_secure_installation を行なって、Change the root password? [Y/n] Y として新しいパスワードを登録するのが良いと思います.
当然、セキュリティーを考えると、外部に流れる危険性があるので、できる限り複雑なパスワードを設定する必要はあると思います.