向MySQL用户

时间:2015-09-02 12:16:42

标签: mysql permissions create-table grant

我有一个在某些用户之间共享的数据库,我想管理他们对此的权限。

我想授予创建新表以及访问(选择,插入,更新,删除)该表的权限,当然是对没有数据库完全权限的用户(只有他具有SELECT访问权限)一些表格。)

所以,我执行了这个查询:

GRANT CREATE ON eh1 TO user1

然后,当我使用该用户登录并尝试创建新表时,我收到此错误:

  

1142 - 对表'folan'的用户'user1'@'localhost'拒绝CREATE命令

这是什么问题?我怎么能这样做?

更新

通过将命令更改为:

,部分解决了问题

GRANT CREATE ON eh1.* TO user1

现在还有另一个问题,即user1无法选择或插入新创建的表中。原因是可以理解的,但是有办法解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:4)

按照以下方式使用 -

GRANT CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';

注意:'%'将提供来自所有ips的访问权限,因此我们应该提供特定ip而不是所有ips的权限,因此请使用任何ip更改'%',例如'191.161.3.1'

如果用户需要select / insert / update / delete / create rights,则语法为 -

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';

根据用户要求更新:

GRANT CREATE ON eh1.* TO user1@'%' IDENTIFIED BY 'user1_password';
GRANT SELECT, INSERT, UPDATE ON eh1.table1 TO user1@'%';
GRANT SELECT, INSERT, UPDATE ON eh1.table2 TO user1@'%';

答案 1 :(得分:1)

关注this,正确的语法是

GRANT CREATE ON eh1.* TO user1

使用eh1数据库。

如果您不使用"。*",您的数据库将被视为一个表。