如何在MySQL中授予数据库而不是表的权限?

3

我想知道如何在没有表的情况下授予数据库权限。

我尝试了以下方法:

GRANT ALL ON databasename to username@hostname;

但是它显示了一个错误,说“在用户表中找不到任何匹配的行”。


1
用户名称存在吗? - Pekka
1
我投票关闭此问题,因为它与编程无关,而是适用于http://dba.stackexchange.com/。 - akostadinov
2个回答

4

你有没有尝试过类似这样的东西?

mysql> create database amarokdb;
Query OK, 1 row affected (0.00 sec)

mysql> grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on amarokdb.* to amarokuser@localhost ;
Query OK, 0 rows affected (0.00 sec)

问题在于我不想为所有数据库设置权限。我猜如果我尝试授予amarokuser@localhost identified by 'amarokpasswd'对*.*的使用权,至少会设置使用所有数据库的权限。我是对的吗? - user722756
@user722756,当您使用 amarokdb.* 时,它仅授予该数据库的权限。如果您使用 *.*,则适用于所有数据库。 - akostadinov

0

很可能您的服务器启用了NO_AUTO_CREATE_USER模式。

根据MySQL手册:(http://dev.mysql.com/doc/refman/5.6/en/server-sql-mode.html

NO_AUTO_CREATE_USER阻止GRANT语句在没有指定非空密码的情况下自动创建新用户。(MySQL 5.0.2中添加)

因此,您可以删除NO_AUTO_CREATE_USER模式,或者像这样创建带有密码的用户:

GRANT ALL ON databasename TO username@hostname IDENTIFIED BY 'your non-empty password here'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接