我是DBMS管理员的新手,当我注意到这一点时,我今晚正在 Build 一个新的数据库(使用MySQL) . 在第一次授予用户权限后,会创建另一个看起来像的授权
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
文档说 USAGE
权限意味着"no privileges,"所以我推断这是分层次地授予工作,也许用户必须拥有所有数据库的某种特权,所以这可以作为一个全部的捕获?
我也不明白为什么当我创建的授权中没有一个时,这一行中有一个 IDENTIFIED BY
子句(主要是因为我不明白 IDENTIFIED BY
子句的用途是什么) .
编辑:对不起,原来没有说明,赠款是
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
3 回答
正如你所说,在MySQL中
USAGE
与"no privileges"是同义词 . 来自MySQL Reference Manual:USAGE
是告诉MySQL存在一个帐户而不赋予该帐户任何真正特权的方法 . 他们只拥有使用MySQL的权限,因此USAGE
. 它对应于mysql`.`user
表中没有设置权限的行 .IDENTIFIED BY
子句表示为该用户设置了密码 . 我们如何知道用户是谁?他们通过为其帐户发送正确的密码来表明自己 .用户's password is one of those global level account attributes that isn' t绑定到特定数据库或表 . 它也存在于
mysql`.`user
表中 . 如果用户没有任何其他权限ON *.*
,则会将其授予USAGE ON *.*
并在此处显示其密码哈希值 . 这通常是CREATE USER
声明的副作用 . 以这种方式创建用户时,他们最初没有权限,因此他们只被授予USAGE
.我试图找到
GRANT USAGE on *.* TO
的含义,并在此处找到 . 我可以澄清GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
将在您使用以下命令(CREATE
) create 时被授予:当您使用
GRANT
进行 grant 特权时,将在其上添加新特权 .另外mysql密码在不使用
IDENTIFIED BY
子句时,可能是空值,如果是非空白,则可能是加密的 . 但是USAGE
用于通过授予简单的资源限制器来修改帐户,例如MAX_QUERIES_PER_HOUR
,同样可以通过使用WITH子句指定,与GRANT USAGE
(没有添加权限)或GRANT ALL
一起指定,您也可以在全局指定GRANT USAGE
级别,数据库级别,表级别等....