首页 文章

为什么我第一次授予用户权限时会创建“GRANT USAGE”?

提问于
浏览
68

我是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 回答

  • 6

    正如你所说,在MySQL中 USAGE 与"no privileges"是同义词 . 来自MySQL Reference Manual

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

    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 .

  • 3

    我试图找到 GRANT USAGE on *.* TO 的含义,并在此处找到 . 我可以澄清 GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password 将在您使用以下命令( CREATEcreate 时被授予:

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

    当您使用 GRANT 进行 grant 特权时,将在其上添加新特权 .

  • 102

    另外mysql密码在不使用 IDENTIFIED BY 子句时,可能是空值,如果是非空白,则可能是加密的 . 但是 USAGE 用于通过授予简单的资源限制器来修改帐户,例如 MAX_QUERIES_PER_HOUR ,同样可以通过使用WITH子句指定,与 GRANT USAGE (没有添加权限)或 GRANT ALL 一起指定,您也可以在全局指定 GRANT USAGE 级别,数据库级别,表级别等....

相关问题