为什么我第一次授予用户权限时创build了“授予用法”?
我是DBMSpipe理员的新手,今天正在build立一个新的数据库(使用MySQL)。 第一次授予用户权限后,将创build另一个授予,看起来像
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
该文件说, USAGE
权限意味着“没有权限”,所以我推断这是授予工作分层次,也许用户必须对所有数据库有某种特权,所以这个作为一个捕获所有?
我也不明白为什么这行有一个IDENTIFIED BY
子句,当我创build的授予没有一个(主要是因为我不明白什么目的的IDENTIFIED BY
子句服务)。
编辑:对不起,最初没有说明,赠款是
GRANT ALL PRIVILEGES ON database.* TO admin_user GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
正如你所说,在MySQL中, USAGE
与“没有权限”是同义词。 从MySQL参考手册 :
USAGE权限说明符代表“没有权限”。 它在GRANT的全局级别用于修改帐户属性,如资源限制或SSL特性,而不影响现有的帐户权限。
USAGE
是一种告诉MySQL帐户存在而不授予该帐户任何实际权限的方法。 他们只有权限使用 MySQL,因此USAGE
。 它对应于没有权限设置的`mysql`.`user`
表中的一行。
IDENTIFIED BY
子句表示为该用户设置了密码。 我们如何知道一个用户是他们所说的? 他们通过为他们的账户发送正确的密码来识别自己。
用户的密码是不绑定到特定数据库或表的全局级帐户属性之一。 它也位于`mysql`.`user`
表中。 如果用户没有任何其他特权ON *.*
,则授予USAGE ON *.*
并在其中显示密码哈希。 这通常是CREATE USER
语句的副作用。 当以这种方式创build用户时,他们最初没有权限,所以他们只被授予USAGE
。
我试图GRANT USAGE on *.* TO
findGRANT USAGE on *.* TO
的含义,并在这里find。 我可以澄清的是,当您使用以下命令( CREATE
) 创build用户时,授予GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
将被授予:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
当您授予 GRANT
特权时,将在其上添加新的特权。
另外mysql密码在不使用IDENTIFIED BY
子句的时候,可能是空白值,如果非空白的话,可能会encryption。 但是,通过授予简单资源限制器(如MAX_QUERIES_PER_HOUR
来USAGE
来修改帐户,同样可以使用WITH子句与GRANT USAGE
(没有添加权限)或GRANT ALL
指定,您还可以指定GRANT USAGE
在全球范围内,数据库级别,表级别等。