アクセスが許可されているデータベースから読み取るには、ユーザーが読み取ることができる必要があるため、すべてのMySQLユーザーがSELECT
onにアクセスできます。information_schema
information_schema
これをテストするSELECT
には、単一のデータベース内の単一のテーブルに対する特権のみを持つ新しいユーザーを作成します。ユーザーは、そのデータベースで許可されたテーブルに関連するすべてのものを読み取ることができますがinformation_schema
、許可されていないものは読み取ることができません。
/* Create a new user with only SELECT on one db: */
GRANT SELECT ON newdb.* TO newuser@localhost IDENTIFIED BY 'passwd';
/* Login with that user and list databases */
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| newdb |
+--------------------+
関連ドキュメントから:
各MySQLユーザーにはこれらのテーブルにアクセスする権利がありますが、ユーザーが適切なアクセス権限を持っているオブジェクトに対応するテーブル内の行のみを表示できます。場合によっては(たとえば、INFORMATION_SCHEMA.ROUTINESテーブルのROUTINE_DEFINITION列)、権限が不十分なユーザーにはNULLが表示されます。