22

MySQL データベースの user_account を特定のテーブルに制限するにはどうすればよいですか。元:

UserName: RestrictedUser
DatabaseName: db_Payroll 
TableName: 
  tb_Employees
  tb_Users
  tb_Payroll_YYMMDD
  tb_Payroll_Processed

tb_Users「RestrictedUser」を制限したいtb_Employeesだけで、将来の使用のために作成される残りのテーブルにdb_Payrollはアクセスが許可されます。

4

3 に答える 3

37

ユーザーが現在の権限を持っていないと仮定すると、次のことができます

GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Users TO RestrictedUser@'%'
GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Employees TO RestrictedUser@'%'

ユーザーに付与する権限に応じて、SELECT, INSERT, DELETE別のものに変更できますALL PRIVILEGES

その後、実行して有効になるように、特権をフラッシュすることを忘れないでください

FLUSH PRIVILEGES;
于 2012-03-20T02:36:59.937 に答える
5

次を実行して、個々のテーブルへのアクセスを許可できます。

GRANT ALL ON db_Payroll.tb_Users to RestrictedUser@RestrictedHostName;

他のテーブルについても同様です。適切な場合の代わりに、操作のリストを使用しALLます。

すべてのテーブルへのアクセスを許可せずに、まだ存在していない個々のテーブルへのアクセスを許可することはできません。

于 2012-03-20T02:38:10.670 に答える
0

ユーザーが現在の権限を持っていないと仮定すると、多数のテーブルがあり、ユーザーにそれらのテーブルのいくつかへのアクセスのみを許可したい場合、私が知っている最も簡単な回避策は、私が個人的に QueryCeption™ と呼んでいる手法を使用することです(クエリ内のクエリ):

SELECT GROUP_CONCAT(CONCAT('grant select on `db_Payroll`.', table_name, ' to `RestrictedUser`@`%`') SEPARATOR ';
') from information_schema.tables where table_schema = 'db_Payroll' and 
table_name not in ('TABLE-YOU-WANT-TO-RESTRICT-1', 'TABLE-YOU-WANT-TO-RESTRICT-2','TABLE-YOU-WANT-TO-RESTRICT-3');

これにより、コピーしてエディターに貼り付けることができるテキスト フィールドが出力されます。この特定の例では、そのユーザーの制限されたテーブル配列内にないすべてのテーブルに SELECT 権限を付与します。

于 2021-02-09T20:13:31.943 に答える