web-dev-qa-db-ja.com

phpmyadminからinformation_schemaデータベースを非表示にする方法

この行を書くことからデータベースを隠すことができます

$cfg['Servers'][$i]['hide_db'] = 'information_schema'; 

config.inc.phpファイルpfphpmyadminにあります。

このデータベースのコンテンツには、次のようなURLからアクセスできます http://www.test.com/phpmyadmin/index.php?db=information_schema&token=3ba37ae1e41f6a10e4afc7c69b934bba

Information_schemaデータベースへの完全なアクセスを削除するにはどうすればよいですか?

18
Onkar Janwa

パイプ区切り文字を使用して複数のDBを非表示にすることもできます

$cfg['Servers'][$i]['hide_db'] = 'information_schema|performance_schema|mysql';
18
CatholicForEver

Phpmyadminを外部ディレクトリにインストールしましたが、これらのメソッドは機能しませんでした。

Phpmyadminを開きます

Settings > Features > General > database > Hide databases

非表示にするデータベースを次のように入力します

information_schema|performance_schema|mysql
15
Abhishek Goel

投稿したようなURLからユーザーがinformation_schemaにアクセスするのを制限したいが、hide_db構成ディレクティブに満足できない場合は、phpmyadminのconfig.inc.phpファイルに次の行を追加できます。

if($_GET['db'] == 'information_schema')exit;
5
000

私はこのコメントを最も高い賛成の答えに書きますが、私はまだ十分な評判を持っていません。

複数のデータベースを指定する場合は、(ヘルプに記載されているように)正規表現ルールの下で動作することに注意してください。そのため、可能性は低いかもしれませんが、「information_schema | performance_schema | mysql」を入力すると、これらの文字列を含むDBも非表示になります。

代わりに、「^ information_schema | performance_schema | mysql $」を入力してください。正規表現では、^は文字列の始まりを示し、$は終わりを示します。

これは、部分的な文字列でデータベースを非表示にすることもできることを意味します。 MySQLユーザー権限によってデータベースアクセスを常に制御する必要がありますが、部分一致を使用してDBのグループを非表示にすることができます。たとえば、すべてのテストデータベースを表示したくない場合は、[非表示のデータベース]フィールドに「^ test_」を入力すると、test_で始まるすべてのデータベースが非表示になります。 EG test_123、test_456。

0
Azkatro