如何将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
的其余表格被授予访问权限。
答案 0 :(得分:32)
假设用户没有当前权限,您可以执行以下操作
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;
答案 1 :(得分:5)
您可以通过运行以下命令授予对各个表的访问权限:
GRANT ALL ON db_Payroll.tb_Users to RestrictedUser@RestrictedHostName;
同样适用于其他表格。如果合适,请使用操作列表而不是ALL
。
如果不授予对所有表的访问权限,则无法授予对尚不存在的单个表的访问权限。
答案 2 :(得分: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 权限。