22

如何将 MySQL 数据库中的 user_account 限制为特定表。前任:

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

我想将“RestrictedUser”限制为tb_Users并且仅将创建以供将来使用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 回答