问题:
如何给一个新用户几乎所有的权限,但仍然保护其中一个或多个表/数据库。
详细信息:
如果我有一个数据库,
life
和三个表
passwords
friends
hobbies
如何给这个用户以下权限:
- 插入
- 更新
- 删除
- 创建
- 删除
- 更改
对于前三个权限,可以从以下方式开始:
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
表移动到另一个数据库吗?
提前感谢。
CREATE/DROP
权限,使用GRANT
来给用户访问特定列的权限,并使用VIEWS
来仅给用户访问特定行的权限。 - puk