为什么一个“GRANT用法”创建我第一次授予用户权限?

问题描述 投票:79回答:3

我是新来的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 database privileges grant
3个回答
120
投票

正如你所说,在MySQL USAGE是“没有特权”的代名词。从MySQL Reference Manual

USAGE权限说明符的意思是“没有权限。”它被用来在全球范围内与授予修改帐户属性,如资源限制或SSL特性,而不影响现有的帐户权限。

USAGE是一种方式来告诉MySQL存在的帐户没有授予任何真正的权限给该帐户。他们仅仅需要使用MySQL服务器,因此USAGE许可。它对应于`mysql`.`user`表中的一行,没有设置权限。

IDENTIFIED BY子句表明密码设置为该用户。我们如何知道用户是谁,他们说他们是谁?他们通过他们的帐户发送了正确的密码标识自己。

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


8
投票

我试图找到GRANT USAGE on *.* TO的意义,发现在这里。我可以明确的是,当您创建使用下面的命令(GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password)用户CREATE将被授予:

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

当您授予特权与GRANT,新的特权旨意在它的上面添加。


3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.