我是新来的DBMS的管理方,并建立一个新的数据库今晚(使用MySQL)时,我注意到这一点。授予用户特权的第一次后,另一批创建,看起来像
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
该文件说,USAGE
特权的意思是“没有权限”,所以我推断这就是资助工作层次,或许用户必须拥有某种特权的所有数据库,所以这成为一个包罗万象的?
我也是不明白为什么这条线中有一个IDENTIFIED BY
条款,当我创建的补助没有一个(主要是因为我不明白的IDENTIFIED BY
条款提供什么样的目的)。
编辑:对不起,不说明这个最初的赠款
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
正如你所说,在MySQL USAGE
是“没有特权”的代名词。从MySQL Reference Manual:
USAGE权限说明符的意思是“没有权限。”它被用来在全球范围内与授予修改帐户属性,如资源限制或SSL特性,而不影响现有的帐户权限。
USAGE
是一种方式来告诉MySQL存在的帐户没有授予任何真正的权限给该帐户。他们仅仅需要使用MySQL服务器,因此USAGE
许可。它对应于`mysql`.`user`
表中的一行,没有设置权限。
该IDENTIFIED BY
子句表明密码设置为该用户。我们如何知道用户是谁,他们说他们是谁?他们通过他们的帐户发送了正确的密码标识自己。
用户的密码是不依赖于特定的数据库或表的全球帐户属性之一。它也住在`mysql`.`user`
表。如果用户没有任何其他特权ON *.*
,他们被授予USAGE ON *.*
并显示有他们的密码哈希。这通常是一个CREATE USER
声明的副作用。当以这种方式创建用户,他们最初都没有特权,因此他们只是授予USAGE
。
我试图找到GRANT USAGE on *.* TO
的意义,发现在这里。我可以明确的是,当您创建使用下面的命令(GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
)用户CREATE
将被授予:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
当您授予特权与GRANT
,新的特权旨意在它的上面添加。
在不使用IDENTIFIED BY
子句时另外的MySQL密码,可以是空白的值,如果非空,它们可以被加密。但是,是USAGE
用于通过给予简单的资源限制器如MAX_QUERIES_PER_HOUR
修改帐户,这同样可以通过同时使用WITH子句中,一起选择与GRANT USAGE
(不添加权限)或GRANT ALL
规定,您还可以在全球指定GRANT USAGE
级,数据库级,表级,等等....