MySQL の特定のテーブルを除くデータベースへの権限の付与
多くのデータベースでは、多くの場合、さまざまなユーザーに異なるレベルの権限を付与する必要があります。ユーザーによっては、データベースを完全に制御する必要がある場合もあれば、特定のテーブルに対する制限されたアクセス許可のみを必要とするユーザーもいる場合があります。 MySQL では、包括的な権限をユーザーに簡単に割り当てることができます。ただし、特定のテーブルを除くすべての権限を割り当てるのは難しい場合があります。
最初の失敗した試行
ユーザーの問い合わせに記載されているように、「db_name」を使用してすべての権限を付与しようとすると、 .*" を指定してから、目的のテーブルに対する SELECT 権限を選択的に付与しても、「all」権限はオーバーライドされません。さらに、すべての権限を付与した後で挿入、更新、削除の権限を取り消すと、特定のテーブルの付与ルールがないため、エラーが発生します。
個別の権限の付与
読み取り専用テーブルを除くデータベース内の各テーブルにすべての権限を個別に付与するのは面倒に思えるかもしれませんが、現時点ではこれが最も直接的で信頼性の高い方法です。このアプローチにより、ユーザーには特定のテーブルに対する更新権限がないことが保証されます。
もっと簡単な方法は?
ユーザーは、より単純な解決策を望んでいますが、実際に解決策はあります。すべての権限を付与する利便性と特定のテーブルの除外を組み合わせた手法:
すべての権限を取り消す:
REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;
Information_schema を使用して GRANT ステートメントを作成する:
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";
このアプローチは、各テーブルに個別に権限を手動で付与するよりも迅速かつ動的な代替手段を提供します。
以上がMySQL データベースで特定のテーブルを除くすべての権限を付与する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。