为什么我第一次授予用户权限时创build了“授予用法”?

我是DBMSpipe理员的新手,今天正在build立一个新的数据库(使用MySQL)。 第一次授予用户权限后,将创build另一个授予,看起来像

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

该文件说, USAGE权限意味着“没有权限”,所以我推断这是授予工作分层次,也许用户必须对所有数据库有某种特权,所以这个作为一个捕获所有?

我也不明白为什么这行有一个IDENTIFIED BY子句,当我创build的授予没有一个(主要是因为我不明白什么目的的IDENTIFIED BY子句服务)。

编辑:对不起,最初没有说明,赠款是

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

正如你所说,在MySQL中, USAGE与“没有权限”是同义词。 从MySQL参考手册 :

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

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

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

用户的密码是不绑定到特定数据库或表的全局级帐户属性之一。 它也位于`mysql`.`user`表中。 如果用户没有任何其他特权ON *.* ,则授予USAGE ON *.*并在其中显示密码哈希。 这通常是CREATE USER语句的副作用。 当以这种方式创build用户时,他们最初没有权限,所以他们只被授予USAGE

我试图GRANT USAGE on *.* TOfindGRANT USAGE on *.* TO的含义,并在这里find。 我可以澄清的是,当您使用以下命令( CREATE创build用户时,授予GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password将被授予:

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

当您授予 GRANT特权时,将在其上添加新的特权。

另外mysql密码在不使用IDENTIFIED BY子句的时候,可能是空白值,如果非空白的话,可能会encryption。 但是,通过授予简单资源限制器(如MAX_QUERIES_PER_HOURUSAGE来修改帐户,同样可以使用WITH子句与GRANT USAGE (没有添加权限)或GRANT ALL指定,您还可以指定GRANT USAGE在全球范围内,数据库级别,表级别等。