2012-03-20 50 views
17

如何限制MySQL数据库中的user_account到特定的表。例如:如何限制MySQL用户到特定的表

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

我想限制“RestrictedUser”到tb_Users,只有tb_Employees,并且会为将来使用创建的的db_Payroll表的其余部分被授予访问。

回答

27

假设用户当前没有特权,你可以做以下

GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Users TO [email protected]'%' 
GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Employees TO [email protected]'%' 

这依赖于你希望授予用户哪些权限,您可以更改SELECT, INSERT, DELETE别的东西,例如ALL PRIVILEGES

之后,请记住刷新特权以使其生效。

FLUSH PRIVILEGES; 
+3

仅当您使用DML直接修改授权表时,在使用'GRANT'或任何其他帐户修改语句后,您不需要'FLUSH PRIVILEGES'。请参阅http://dev.mysql.com/doc/refman/5.5/en/privilege-changes.html – 2013-01-23 13:29:32

4

您可以通过运行授予访问单个表:

GRANT ALL ON db_Payroll.tb_Users to [email protected]; 

,类似的还有其他表。如果适用,请使用操作列表,而不是ALL

您无法授予对尚未存在的个别表的访问权限,但不授予对所有表的访问权限。

+0

“如果不授予对所有表的访问权,则无法授予对尚不存在的单个表的访问权限。”这是我的主要问题,薪水应用程序使用db_Payroll,我使用PHP创建web界面,并且我希望保证连接的安全性,而不必编写工资应用程序使用的连接设置。 – aintgel 2012-03-20 04:04:11

+5

因此,决定你的表格是什么,并授予相应的访问权限。如果您正在考虑涉及在运行时创建表的设计,请停止!不要这样做。 – duskwuff 2012-03-20 04:14:47

相关问题