phpMyAdminで『information_schema』などを非表示にする方法
MySQLでは、初期状態で『information_schema』、『mysql』、『test』、『performance_schema』などが作成されます。
『information_schema』は情報スキーマと呼ばれ、データベースで定義された情報が格納されています。
情報スキーマは標準SQLで定義されているもので、PostgreSQLなど他のRDBMSと共通化するために存在します。
この『information_schema』は通常、一般のユーザーには閲覧などをすることがないものですが、
どのユーザーにもアクセスする権限があるのでphpMyAdminでもデータベースの一覧に表示がされます。
このデータベースを一覧に表示させたくない場合はconfig.inc.phpで『hide_db』を使います。
config.inc.php
$cfg['Servers'][$i]['hide_db'] = "(^information_schema$|^performance_schema$|^test$)";
『hide_db』が使用される場所は次のようになっています。
/libraries/List_Database.class.php 85行目
protected function _checkHideDatabase() { if (empty($GLOBALS['cfg']['Server']['hide_db'])) { return; } foreach ($this->getArrayCopy() as $key => $db) { if (preg_match('/' . $GLOBALS['cfg']['Server']['hide_db'] . '/', $db)) { $this->offsetUnset($key); } } }
『hide_db』を正規表現のパターンとして使用して、一致するデータベースを非表示としています。
ただし一覧から非表示となるだけで、アクセスすることはできます。
『information_schema』は、すべてのユーザーから参照される必要があるためGRANTなどでアクセスできるデータベースを限定しても自動的にアクセス権が付与されます。
SHOW DATABASES; SHOW TABLES FROM information_schema;
のようなSQL文では参照することができます。
関連記事
- MySQL MariaDB
- PHP
- 開発環境 ツール類
- Eclipse で全角空白、タブを強調表示する方法
- PHPでMySQLなどにPDO接続をすると、could not find driverのエラーが出る場合
- Twitter APIでのエラーの一覧
- PHPのインストール
- UTF-8からSJISで文字化け
- PHPでfacebookのフィード(ウォール)に投稿する方法
- MySQL(MariaDB)をユーザー情報を含めてすべて移行する方法
- Poderosa5で「インデックスが配列の境界外です。」と出る場合の対処法(CentOS8 Ubuntu)
- Fatal error: Maximum execution time of 30 seconds exceededの対処法
- Gitを自動的にpullする方法(常に最新の状態にする)
- Windows版PHPにPEAR・PECLをインストールする
- PDO_MYSQLをインストールする方法
- GoogleChromeでSSL接続を強制される設定(HSTS)のキャッシュを消す方法
- PHPのPEARは2019年に改ざんされたことがあります
- ダブルクオート/シングルクオート/ヒアドキュメント、echo/printの速度比較
- セッション固定攻撃(session fixation)
- Issue-Tracker [バグ追跡システム]
- LiveHTTPHeaders FireFox用HTTPヘッダー情報確認ツール
- Twitter APIを使用する (Twitterアプリケーション登録)
- Google Chromeで一部の文字だけ四角記号に文字化けするときの対処法
- MySQLの処理を停止させる方法
- cron実行時のPATHなどの環境変数を確認する方法
- Symfony(シンフォニー)
- ディレクトリが存在するにもかかわらず、『No such file or directory』エラーが出る
- empty関数について
- DB設計を見直してEC-CUBEを高速化する
- MySQL Query Browser 本家GUIツール
スポンサーリンク