116

当我注意到这一点时,我是 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
4

3 回答 3

165

正如您所说,在 MySQLUSAGE中是“无特权”的代名词。来自MySQL 参考手册

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

USAGE是一种告诉 MySQL 帐户存在而不授予该帐户任何实际权限的方法。他们只有使用MySQL 服务器的权限,因此USAGE. 它对应于`mysql`.`user`表中没有设置权限的行。

IDENTIFIED BY子句表示为该用户设置了密码。我们如何知道用户是他们所说的那个人?他们通过发送正确的帐户密码来识别自己。

用户密码是与特定数据库或表无关的全局级别帐户属性之一。它也住在`mysql`.`user`桌子上。如果用户没有任何其他权限ON *.*,他们将被授予USAGE ON *.*并在那里显示他们的密码哈希。这通常是声明的副作用CREATE USER。当一个用户以这种方式创建时,他们最初没有特权,所以他们只是被授予USAGE

于 2010-10-19T19:43:30.113 回答
12

我试图找到GRANT USAGE on *.* TO并找到here的含义。我可以澄清,当您使用以下命令( )创建GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password用户时,将被授予:CREATE

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

当您授予权限时GRANT,将在其之上添加新的权限。

于 2013-03-15T17:59:50.333 回答
3

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

于 2011-12-18T06:42:56.880 回答