データベース全体の管理者からの特定のテーブル権限の取り消し
MySQL 管理者は、場合によっては、ユーザーにデータベース全体の完全な権限を付与する必要がある場合があります。特定のテーブルへのアクセスを制限しながらデータベースを管理します。この一見単純なタスクを従来の方法で達成するのは驚くほど難しい場合があります。
Select を除くすべての権限の付与
一般的なアプローチの 1 つは、データベースに対するすべての権限を付与することです (例: db_name.*) の後に、除外されたテーブルに対する選択権限に対する特定の付与が続きます。ただし、その後の付与では最初の無制限のアクセスがオーバーライドされないため、この方法は効果がありません。
選択的権限アプローチ
推奨される解決策には、テーブルに対する権限の付与が含まれます。制限したいテーブルを除く、テーブルごとに指定します。この方法は、多数のテーブルを持つデータベースでは面倒な場合がありますが、精度が確保され、保護されたテーブルへの意図しないアクセスが防止されます。
情報スキーマの使用
便宜上、次のようにすることができます。 information_schema データベースを利用して、必要な許可ステートメントを生成します。次のクエリは、保護するテーブルを除く、特定のデータベース内のすべてのテーブルに対する付与コマンドのリストを返します。
SELECT CONCAT("GRANT UPDATE ON db.", table_name, " TO user@localhost;") FROM information_schema.TABLES WHERE table_schema = "YourDB" AND table_name <> "table_to_skip";
結論
すべてを付与する特定のテーブルを除くデータベースに対する権限は、テーブルごとに手動で権限を付与するか、information_schema データベースを使用して保護対象のテーブルを除くすべてのテーブルに対して付与ステートメントを生成することによって実現できます。後者のアプローチは、この一般的な MySQL 管理タスクに対する効率的で信頼性の高いソリューションを提供します。
以上がMySQL でデータベース全体の管理者からテーブル権限を取り消すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。