ユーザーが求めるユーザーが特定のテーブルを除き、SELECT 権限のみを持つ必要があるデータベースへの完全なアクセスを許可するソリューション。
データベースに対するすべての権限を付与しようとしても、次に、目的のテーブルに対する SELECT 権限のみを明示的に付与するか、挿入、更新、および削除権限を取り消すと、エラーが発生します。
動的 Grant ステートメントの生成:
プロセスを簡略化するために、次の SELECT CONCAT クエリを使用して必要な GRANT ステートメントを生成できます:
<code class="sql">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";</code>
ステップ:
データベース上のユーザーのすべての権限を取り消します:
<code class="sql">REVOKE ALL PRIVILEGES ON db.* FROM user@localhost; </code>
例:
REVOKE ALL PRIVILEGES ON my_db.* FROM my_user@localhost; SELECT CONCAT("GRANT UPDATE ON my_db.", table_name, " TO my_user@localhost;") FROM information_schema.TABLES WHERE table_schema = "my_db" AND table_name <> "special_table";
以上が単一のテーブルを除くすべての権限を MySQL データベースに付与するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。