2010-01-24 119 views
60

我是新来的DBMS的管理方,并建立一个新的数据库今晚(使用MySQL)时,我注意到这一点。授予用户特权的第一次后,另一批创建,看起来像为什么第一次授予用户权限时创建了“授予用法”?

GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password 

的文档说USAGE特权的意思是“没有权限”,所以我推断这就是补助分级,也许一个工作用户必须对所有数据库拥有某种特权,所以这可以作为一个捕获所有?

我也不明白为什么这行有一个IDENTIFIED BY子句,当我创建的授权没有一个(主要是因为我不明白IDENTIFIED BY子句的用途)。

编辑:对不起,不说明这个最初,赠款正如你所说,在MySQL USAGE是“没有特权”的代名词是

GRANT ALL PRIVILEGES ON database.* TO admin_user 
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user 
+0

可以请你告诉我们你已经运行的授权 – Pentium10 2010-01-24 10:55:42

回答

94

。来自MySQL Reference Manual

USAGE特权说明符代表“没有特权”。它在GRANT的全局级别用于修改帐户属性,如资源限制或SSL特性,而不影响现有帐户权限。

USAGE是一种告诉MySQL帐户存在而不授予该帐户任何实际权限的方式。他们只允许使用MySQL的,因此USAGE。它对应于`mysql`.`user`表中没有设置特权的行。

IDENTIFIED BY子句表示设置了口令为该用户。我们如何知道用户是他们自称的用户?他们通过为他们的账户发送正确的密码来识别自己。

用户的密码是不依赖于特定的数据库或表的全球帐户属性之一。它也住在`mysql`.`user`表中。如果用户没有任何其他特权ON *.*,他们被授予USAGE ON *.*并显示有他们的密码哈希。这通常是CREATE USER声明的副作用。当以这种方式创建用户时,他们最初没有特权,因此他们仅被授予USAGE

+5

奇怪:为什么打电话给他们,当他们的意思是没有特权... – robsch 2015-01-16 09:00:48

+3

我认为这是因为他们被允许进行身份验证。如果您尝试使用错误的用户或/和密码,则无法进行身份验证。具有USAGE特权的用户可以运行某些SQL命令,如“select 1 + 1”和“show processlist”。 – 2015-02-26 16:10:12

3

在不使用IDENTIFIED BY子句时另外的MySQL密码,可以是空白的值,如果非空,它们可以被加密。但是,是USAGE用于通过给予简单的资源限制器如MAX_QUERIES_PER_HOUR修改帐户,这同样可以通过也 使用WITH子句中,一起选择与GRANT USAGE(不添加权限)或GRANT ALL规定,您还可以在指定GRANT USAGE全球级别,数据库级别,表级别等...

5

我试图找到GRANT USAGE on *.* TO的含义,并在此处找到。我可以澄清GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password将被授予当你创建用户使用下面的命令(CREATE):

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; 

当你补助特权与GRANT,新的特权旨意要在它的上面添加。