当我注意到这一点时,我是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
子句的用途是什么)。
编辑:很抱歉没有说明这一点,补助金是
{{1}}
答案 0 :(得分:117)
如你所说,在MySQL USAGE
中是“无权限”的同义词。来自MySQL Reference Manual:
USAGE特权说明符代表“没有特权”。它在GRANT的全局级别用于修改帐户属性,例如资源限制或SSL特性,而不会影响现有帐户权限。
USAGE
是告诉MySQL存在一个帐户而不赋予该帐户任何真正特权的方法。他们只有使用 MySQL服务器的权限,因此USAGE
。它对应于`mysql`.`user`
表中没有设置权限的行。
IDENTIFIED BY
子句表示为该用户设置了密码。我们如何知道用户是谁?他们通过为其帐户发送正确的密码来识别。
用户密码是未绑定到特定数据库或表的全局级帐户属性之一。它也存在于`mysql`.`user`
表中。如果用户没有任何其他权限ON *.*
,则会授予他们USAGE ON *.*
并在其中显示其密码哈希值。这通常是CREATE USER
语句的副作用。当以这种方式创建用户时,他们最初没有权限,因此他们只被授予USAGE
。
答案 1 :(得分:7)
我试图找到GRANT USAGE on *.* TO
的含义并在此处找到。我可以澄清,当您使用以下命令(GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
)创建用户时,CREATE
将被授予:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
当您使用GRANT
授予权限时,将在其上添加新权限。
答案 2 :(得分:3)
另外mysql密码在不使用IDENTIFIED BY
子句时可能是空值,如果非空白,则可能是加密的。但是,USAGE
用于通过授予简单的资源限制器(例如MAX_QUERIES_PER_HOUR
)来修改帐户,同样可以通过
使用WITH子句,结合GRANT USAGE
(没有添加权限)或GRANT ALL
,您还可以在全局级别,数据库级别,表级别等指定GRANT USAGE
....