【发布时间】:2012-04-18 02:18:57
【问题描述】:
问题:
我怎样才能为新用户提供几乎所有权限,但仍保护一个或多个表/数据库不受这些权限的影响。
详情:
如果我有一个数据库,
life
还有三张桌子
passwordsfriendshobbies
我如何给这个用户,例如,以下权限:
- 插入
- 更新
- 删除
- 创建
- 丢弃
- 改变
关于前三个,我会这样开始:
GRANT INSERT, UPDATE, DELETE ON life.friends TO username@'localhost' IDENTIFIED BY 'password';
GRANT INSERT, UPDATE, DELETE ON life.hobbies TO username@'localhost' IDENTIFIED BY 'password';
但我对如何使用CREATE 和DROP 感到困惑。如果我像这样授予整个数据库的删除权限:
GRANT DROP ON life TO username@'localhost' IDENTIFIED BY 'password';
然后用户可以删除我不想要的passwords 表。我可以改为根据如下表格授予它:
GRANT DROP ON life.friends TO username@'localhost' IDENTIFIED BY 'password';
GRANT DROP ON life.hobbies TO username@'localhost' IDENTIFIED BY 'password';
但是如果我像这样授予CREATE 权限会发生什么:
GRANT CREATE ON life TO username@'localhost' IDENTIFIED BY 'password';
这是否意味着用户甚至不能删除他/她创建的表?我的问题还与创建/删除数据库有关。如果我想允许用户创建和删除尽可能多的他们自己的数据库,但不是life数据库怎么办?
我是否应该通过将passwords 表移动到另一个数据库来改变我的方法?
先谢谢你了。
【问题讨论】:
-
独立的数据库是要走的路。 MySql 权限是有限的。他们不允许
deny特权。 -
@TheScrumMeister 如果您发布它,我会接受它作为答案
-
它不是一个完整的答案;-)。作为处理过 MySql 权限的人,这是我遇到的(许多)限制之一。
-
您对此有什么吸引力吗?
-
@MikePurcell 有点。我为
CREATE/DROP权限使用单独的数据库,使用GRANT授予用户对特定列的访问权限,并使用VIEWS授予用户仅对特定行的访问权限。