官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.7.1.4 GRANT Statement
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
13.7.1.4 GRANT Statement
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user [auth_option] [, user [auth_option]] ...
[REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
[WITH {GRANT OPTION | resource_option} ...]
GRANT PROXY ON user
TO user [, user] ...
[WITH GRANT OPTION]
object_type: {
TABLE
| FUNCTION
| PROCEDURE
}
priv_level: {
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
}
user:
(see Section 6.2.4, “Specifying Account Names”)
auth_option: {
IDENTIFIED BY 'auth_string'
| IDENTIFIED WITH auth_plugin
| IDENTIFIED WITH auth_plugin BY 'auth_string'
| IDENTIFIED WITH auth_plugin AS 'auth_string'
| IDENTIFIED BY PASSWORD 'auth_string'
}
tls_option: {
SSL
| X509
| CIPHER 'cipher'
| ISSUER 'issuer'
| SUBJECT 'subject'
}
resource_option: {
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
}
…GRANT 语句授予mysql用户帐户特权。有几个方面GRANT 在下列专题下介绍的声明:
-
一般概述
-
反对引用指引
-
由mysql支持的特权
-
帐户名称及密码
-
全球特权
-
数据库权限
-
表格特权
-
列权限
-
存储常规权限
-
代理用户权限
-
隐式账户创建
-
其他帐户特征
-
千年发展目标和标准SQL赠款版本
一般概述
…GRANT 语句授予mysql用户帐户特权。
给予他们特权 GRANT ,你必须拥有 GRANT OPTION 你必须拥有你所授予的特权。(如果你有 UPDATE 资助表的特权mysql
系统数据库,您可以授予任何帐户任何特权.)当…… read_only 系统变量启用,GRANT 另外要求SUPER 特权。
…REVOKE 陈述与GRANT 并允许管理员删除帐户权限。看 第13.7.1.6节,"撤销声明" .
每个帐户名称使用的格式 第6.2.4节,"说明帐户名称" .例如:
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
如果省略,帐户的主机名称部分默认为 '%'
.
通常,数据库管理员首先使用 CREATE USER 创建帐户并定义其非特权特性,如密码、是否使用安全连接以及对访问服务器资源的限制,然后使用 GRANT 定义它的特权。 ALTER USER 可以用来改变现有账户的非特权特征。例如:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
ALTER USER 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
例子如下:IDENTIFIED
条款。假设你用 CREATE USER 在建立账户的时间,以避免创建不安全的账户。
如果一个账户的名字 GRANT 已经没有声明了,GRANT 可根据下文讨论中所述的条件设立。 NO_AUTO_CREATE_USER sql模式。也可以使用 GRANT 指定非特权帐户特性,如它是否使用安全连接和对访问服务器资源的限制。
然而,使用GRANT 在mysql5.7中,对于创建帐户或定义非特权特性是不赞成的。相反,使用这些任务CREATE USER 或 ALTER USER .
来自 Mysql 程序, GRANT 回答: Query OK, 0 rows affected
一旦成功执行。为了确定操作产生的权限,请使用SHOW GRANTS .看 第13.7.5.21节,"显示补助金报表" .
在某些情况下, GRANT 可以记录在服务器日志或客户端的历史文件中,例如: ~/.mysql_history
,也就是说,任何人都可以阅读清楚的文本密码。有关服务器日志发生这种情况的信息以及如何控制它,请参见 第6.1.2.3节,"密码和日志记录" .有关客户端日志记录的类似信息,请参阅 Section 4.5.1.3, “mysql Client Logging” .
GRANT支持主机名称最多60个字符长。用户名最多可达32个字符。数据库、表、列和例程名称最多可达64个字符。
不要试图通过改变用户名的允许长度来改变mysql.user
系统表。这样做会导致不可预测的行为,甚至可能使用户无法登录到mysql服务器 .绝不改变表格的结构。mysql
系统数据库以任何方式进行,但通过下列程序除外: Section 2.10, “Upgrading MySQL” .
反对引用指引
里面有几个物体GRANT 声明可以引用,但在许多情况下,引用是可选的:帐户、数据库、表、列和常规名称。例如,如果 user_name
或 host_name
帐户名中的值作为未引用的标识符是合法的,您不必引用它。但是,需要有引号来指定 user_name
包含特殊字符的字符串(例如-
),或 host_name
包含特殊字符或通配符的字符串%
(例如,'test-user'@'%.com'
)。分别引用用户名和主机名。
指定引用值:
-
引用数据库、表、列和例程名称作为标识符.
-
引用用户名和主机名作为标识符或字符串.
-
引用密码作为字符串。
关于字串引用和标识引用指南,请参阅 第9.1.1节,"字符串文字" ,以及 第9.2节,"模式对象名称" .
…_
和%
在指定数据库名称时,允许使用通配符。 GRANT 授予数据库级权限的语句( )。例如,这意味着 字符作为数据库名称的一部分,请使用 逃跑性格 在…中 语句,防止用户访问与通配符模式相匹配的额外数据库(例如, ). GRANT ... ON
db_name
.*_
\
\_
GRANTGRANT ... ON `foo\_bar`.* TO ...
发行倍数GRANT
包含通配符的语句可能不会对DML语句产生预期效果;在解析涉及通配符的授予时,mysql只考虑第一个匹配的授予。换句话说,如果用户使用与同一数据库相匹配的通配符拥有两个数据库级的授予,则首先创建的授予将被应用。考虑一下数据库 db
和餐桌t
使用这里所示的语句:
mysql> CREATE DATABASE db;
Query OK, 1 row affected (0.01 sec)
mysql> CREATE TABLE db.t (c INT);
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO db.t VALUES ROW(1);
Query OK, 1 row affected (0.00 sec)
接下来(假设经常账户是mysql) root
拥有必要权限的帐户),我们创建一个用户u
接下来是第二次GRANT
包含通配符的语句,如:
mysql> CREATE USER u;
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT SELECT ON `d_`.* TO u;
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT INSERT ON `d%`.* TO u;
Query OK, 0 rows affected (0.00 sec)
mysql> EXIT
Bye
如果我们结束了会话然后再次登录 Mysql 客户,这次是 U ,我们看到这个帐户只拥有第一批对等拨款所提供的特权,但没有第二批:
$> mysql -uu -hlocalhost
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.46-tr Source distribution
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql> TABLE db.t;
+------+
| c |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql> INSERT INTO db.t VALUES ROW(2);
ERROR 1142 (42000): INSERT command denied to user 'u'@'localhost' for table 't'
当一个数据库名不用于授予数据库级的特权,而是作为授予某些其他对象(例如表或例程)特权的限定符时(例如, ),mysql将通配符解释为文字字符。 GRANT ... ON
db_name
.tbl_name
由mysql支持的特权
下表概述了允许的 priv_type
可为GRANT 和 REVOKE 以及每个特权的级别。有关每个特权的其他信息,请参阅 第6.2.2节,"mysql提供的特权" .
表13.5授予和撤销的允许特权
特权 | 意义和可承认水平 |
---|---|
ALL [PRIVILEGES] | 在指定存取级别授予所有特权,但 GRANT OPTION 和 PROXY . |
ALTER | 能够使用ALTER TABLE .级别:全球、数据库、表格。 |
ALTER ROUTINE | 允许修改或删除存储例程。级别:全球,数据库,日常。 |
CREATE | 启用数据库和表创建。级别:全球、数据库、表格。 |
CREATE ROUTINE | 启用存储程序创建.级别:全球数据库。 |
CREATE TABLESPACE | 启用表空间和日志文件组以创建、修改或删除。级别:全球。 |
CREATE TEMPORARY TABLES | 能够使用CREATE TEMPORARY TABLE .级别:全球数据库。 |
CREATE USER | 能够使用CREATE USER , DROP USER , RENAME USER ,以及 REVOKE ALL PRIVILEGES .级别:全球。 |
CREATE VIEW | 允许创建或更改视图。级别:全球、数据库、表格。 |
DELETE | 能够使用DELETE .级别:全球,数据库,表格. |
DROP | 允许删除数据库、表和视图。级别:全球、数据库、表格。 |
EVENT | 启用事件调度程序的事件。级别:全球数据库。 |
EXECUTE | 使用户能够执行存储例程.级别:全球,数据库,日常。 |
FILE | 使用户能够使服务器读取或写入文件.级别:全球。 |
GRANT OPTION | 允许授予其他帐户或从其他帐户中删除的特权。级别:全局,数据库,表格,例行,代理. |
INDEX | 允许创建或删除索引。级别:全球、数据库、表格。 |
INSERT | 能够使用INSERT .级别:全局,数据库,表格,列. |
LOCK TABLES | 能够使用LOCK TABLES 在你的桌子上SELECT 特权。级别:全球数据库。 |
PROCESS | 使用户能够看到所有的过程SHOW PROCESSLIST .级别:全球。 |
PROXY | 启用用户代理。层次:从用户到用户. |
REFERENCES | 启用外键创建。级别:全局,数据库,表格,列. |
RELOAD | 能够使用FLUSH 手术。级别:全球。 |
REPLICATION CLIENT | 允许用户询问源服务器或副本服务器在哪里。级别:全球。 |
REPLICATION SLAVE | 启用副本从源文件读取二进制日志事件。级别:全球。 |
SELECT | 能够使用SELECT .级别:全局,数据库,表格,列. |
SHOW DATABASES | 使能SHOW DATABASES 显示所有数据库。级别:全球。 |
SHOW VIEW | 能够使用SHOW CREATE VIEW .级别:全球、数据库、表格。 |
SHUTDOWN | 能够使用 Mysq判刑 .级别:全球。 |
SUPER | 能够利用其他行政业务,例如: CHANGE MASTER TO , KILL , PURGE BINARY LOGS , SET GLOBAL ,以及 Mysq判刑;调试 指挥官。级别:全球。 |
TRIGGER | 启动触发操作。级别:全球、数据库、表格。 |
UPDATE | 能够使用UPDATE .级别:全局,数据库,表格,列. |
USAGE | 同义词 “ 无特权 ” |
触发器与表关联。要创造或放下一个触发器,你必须拥有 TRIGGER 为了桌子的特权,不是触发器。
在…中GRANT 声明, ALL [PRIVILEGES] 或PROXY 特权必须单独命名,不能与其他特权一起指定。 ALL [PRIVILEGES] 所列所有特权的级别,除了 GRANT OPTION 和 PROXY 特权。
USAGE 可以指定创建没有权限的用户,或指定 REQUIRE
或WITH
一个帐户的条款没有改变它的现有特权。(不过,使用GRANT 定义非特权特征是被反对的。
Mysql帐户信息存储在《经济、社会、文化权利国际公约》的表格中。 mysql
系统数据库。详情请参阅 第6.2节,"出入控制和帐户管理" ,讨论mysql
系统数据库和访问控制系统广泛.
如果授予表持有包含混合情况数据库或表名称的特权行,以及 lower_case_table_names 系统变量设置为非零值, REVOKE 不能用来撤销这些特权。有必要直接操作授予表。(GRANT 不创建这样的行 lower_case_table_names 已设置,但这些行可能是在设置变量之前创建的。)
特权可以在多个级别授予,这取决于用于ON
条款。用于 REVOKE ,一样 ON
语法指定要删除哪些特权。
对于全球数据库表格和日常级别, GRANT ALL 只分配在您授予的级别上存在的特权。例如, 是一个数据库级语句,因此它不授予任何全球性的权限,例如 .授予 不指定 或 特权。 GRANT ALL ON
FILEALLGRANT OPTIONPROXYdb_name
.*
…object_type
如果有条款,应规定为:TABLE
, FUNCTION
,或PROCEDURE
当下列对象是表、存储函数或存储过程时.
用户为数据库、表、列或例程持有的权限作为逻辑的附加形式形成。 OR 每个权限级别的帐户特权,包括全局级别。不可能由于在较低一级没有这种特权而拒绝给予较高级别的特权。例如,这份声明同意 SELECT 和 INSERT 全球特权:
GRANT SELECT, INSERT ON *.* TO u1;
全局授予的权限适用于所有数据库、表和列,即使不是在较低级别授予的权限。
特权审核程序详情载于 第6.2.6节,"出入控制,第2阶段:请求核查" .
如果您甚至为一个用户使用表、列或例程权限,则服务器检查所有用户的表、列和例程权限,这稍微减缓了mysql的速度。同样,如果您为任何用户限制查询、更新或连接的数量,则服务器必须监控这些值。
Mysql使您能够在不存在的数据库或表上授予特权。对于表格,授予的特权必须包括CREATE 特权。 这种行为是设计的 ,目的是使数据库管理员能够为以后创建的数据库或表准备用户帐户和权限。
当您删除数据库或表时,Mysql不会自动撤销任何特权 .但是,如果您放弃了一个例程,则撤销为该例程授予的任何例程级别权限。
帐户名称及密码
Auser
价值a GRANT 语句表示该语句所适用的mysql帐户。为了容纳来自任意主机的用户权限,mysql支持指定user
表中的价值 . '
user_name
'@'host_name
'
您可以在主机名中指定通配符。例如, 适用于 为任何一个 领域,和 适用于 为任何一个 C类子网。 '
user_name
'@'%.example.com'user_name
example.com
'
user_name
'@'198.51.100.%'user_name
198.51.100
简单的形式 是一个同义词 . '
user_name
''
user_name
'@'%'
Mysql不支持用户名中的通配符 .若要查询匿名用户,请指定一个帐户,帐户上有一个空的用户名。 GRANT 声明:
GRANT ALL ON test.* TO ''@'localhost' ...;
在这种情况下,允许从本地主机连接到匿名用户正确密码的任何用户访问与匿名用户帐户相关的权限。
有关帐户名称中的用户名和主机名值的其他信息,请参阅 第6.2.4节,"说明帐户名称" .
如果您允许本地匿名用户连接到mysql服务器,您还应该向所有本地用户授予权限,作为 .否则,匿名用户帐户 在…中 当指定的用户试图从本地机器登录到mysql服务器时,将使用系统表。详情请参阅 第6.2.5节,"出入控制,第1阶段:连接核查" . '
user_name
'@'localhost'localhost
mysql.user
若要确定此问题是否适用于您,请执行列出任何匿名用户的下列查询:
SELECT Host, User FROM mysql.user WHERE User='';
为避免上述问题,请使用此语句删除本地匿名用户帐户:
DROP USER ''@'localhost';
为了GRANT 允许auth_option
遵循A的价值 user
价值, auth_option
始于 IDENTIFIED
并通过指定帐户身份验证插件、凭证(例如密码)或两者,指示帐户如何进行身份验证。的语法 auth_option
条款是相同的CREATE USER 声明。详情请参阅 第13.7.1.2节,"创建用户声明" .
使用GRANT 在mysql5.7中,定义帐户身份验证特性是不可取的。相反,建立或改变身份验证特征 CREATE USER 或 ALTER USER .希望如此 GRANT 在未来的mysql版本中移除的能力。
何时IDENTIFIED
你拥有全球赠款特权(GRANT OPTION ),任何指定的密码都会成为该帐户的新密码,即使该帐户存在并且已经有密码。没有IDENTIFIED
,帐户密码不变。
全球特权
全局权限是管理的或适用于给定服务器上的所有数据库。分配全局权限,使用 ON *.*
语法:
GRANT ALL ON *.* TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON *.* TO 'someuser'@'somehost';
…CREATE TABLESPACE , CREATE USER , FILE , PROCESS , RELOAD , REPLICATION CLIENT , REPLICATION SLAVE , SHOW DATABASES , SHUTDOWN ,以及 SUPER 特权是行政性的,只能在全球范围内授予。
其他特权可在全球范围或更具体的级别授予。
GRANT OPTION在全球一级授予任何全球特权适用于所有全球特权。
Mysql在 mysql.user
系统表。
数据库权限
数据库权限适用于给定数据库中的所有对象.分配数据库级权限,使用 语法: ON
db_name
.*
GRANT ALL ON mydb.* TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
如果你用ON *
语法(而不是 ON *.*
),在数据库一级为默认数据库分配权限。如果没有默认数据库,就会发生错误.
…CREATE , DROP , EVENT , GRANT OPTION , LOCK TABLES ,以及 REFERENCES 权限可以在数据库级别上指定。表或例程的权限也可以在数据库一级指定,在这种情况下,它们适用于数据库中的所有表或例程。
Mysql在 mysql.db
系统表。
表格特权
表权限适用于给定表中的所有列。分配表级权限,使用 语法: ON
db_name.tbl_name
GRANT ALL ON mydb.mytbl TO 'someuser'@'somehost';
GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';
如果你指定tbl_name
与其说 db_name.tbl_name
,该声明适用于tbl_name
在默认数据库中。如果没有默认数据库,就会发生错误.
允许的priv_type
表一级的数值ALTER , CREATE VIEW , CREATE , DELETE , DROP , GRANT OPTION , INDEX , INSERT , REFERENCES , SELECT , SHOW VIEW , TRIGGER ,以及 UPDATE .
表级权限适用于基表和视图。它们不适用于使用CREATE TEMPORARY TABLE ,即使表格名称匹配。有关TEMPORARY
表上特权,见 第13.1.18.2节,"创建临时表格说明" .
Mysql在 mysql.tables_priv
系统表。
列权限
列权限适用于给定表中的单个列。在列级别授予的每一个权限必须后面是括号内的列或列。
GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser'@'somehost';
允许的priv_type
列的值(即当您使用 column_list
条款) INSERT , REFERENCES , SELECT ,以及 UPDATE .
Mysql在 mysql.columns_priv
系统表。
存储常规权限
…ALTER ROUTINE , CREATE ROUTINE , EXECUTE ,以及 GRANT OPTION 特权适用于存储例程(过程和函数)。它们可以在全球和数据库两级授予。除了 CREATE ROUTINE ,这些特权可在例行程序级别授予个别例行程序。
GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost';
GRANT EXECUTE ON PROCEDURE mydb.myproc TO 'someuser'@'somehost';
允许的priv_type
常规级别的价值观是ALTER ROUTINE ,EXECUTE ,以及 GRANT OPTION . CREATE ROUTINE 不是常规级的特权,因为您必须在全局级或数据库级拥有创建例程的特权。
Mysql在 mysql.procs_priv
系统表。
代理用户权限
…PROXY 特权使一个用户能够成为另一个用户的代理。代理用户模拟或获取被代理用户的身份;也就是说,它承担被代理用户的特权。
GRANT PROXY ON 'localuser'@'localhost' TO 'externaluser'@'somehost';
何时PROXY 是被授予的,它必须是唯一的特权 GRANT 声明, REQUIRE
无法给出条款,唯一允许的WITH
选择是WITH GRANT OPTION
.
代理请求代理用户通过一个插件进行身份验证,该插件在代理用户连接时将被代理用户的名称返回到服务器,并且代理用户拥有 PROXY
代理用户的特权。详情及例子,请参阅 第6.2.14节,"代理用户" .
Mysql在 mysql.proxies_priv
系统表。
隐式账户创建
如果一个账户的名字GRANT 声明并不存在,所采取的行动取决于 NO_AUTO_CREATE_USER sql模式:
-
如果NO_AUTO_CREATE_USER 无法使用,GRANT 创建帐户。 很不安全 除非你使用非空密码
IDENTIFIED BY
. -
如果NO_AUTO_CREATE_USER 已经启用,GRANT 失败和不创建帐户,除非使用非空密码指定
IDENTIFIED BY
或者命名使用的身份验证插件IDENTIFIED WITH
.
如果帐户已经存在,IDENTIFIED WITH
禁止使用,因为它只用于创建新帐户。
其他帐户特征
除了基于用户名和凭证的通常身份验证之外,Mysql还可以检查X.509证书属性。有关在mysql中使用SSL的背景信息,请参阅 第6.3节,"使用加密连接" .
可选择的REQUIRE
条款为mysql帐户指定了与SSL相关的选项。它的语法和CREATE USER 声明。详情请参阅 第13.7.1.2节,"创建用户声明" .
使用GRANT 在mysql5.7中,定义帐户SSL特性是不赞成的。相反,建立或改变SSL特性CREATE USER 或ALTER USER .希望如此GRANT 在未来的mysql版本中移除的能力。
可选择的WITH
这些条款用于这些目的:
-
使用户能够授予其他用户权限
-
为用户指定资源限制
…WITH GRANT OPTION
条款赋予用户在指定权限级别上向其他用户提供任何特权的能力。
给予GRANT OPTION 在不改变帐户特权的情况下,可以这样做:
GRANT USAGE ON *.* TO 'someuser'@'somehost' WITH GRANT OPTION;
小心你给谁GRANT OPTION 因为两个拥有不同权限的用户可以合并权限!
你不能授予另一个用户你自己没有的特权;GRANT OPTION 特权使你能只分配你自己拥有的特权。
请注意,当您授予用户 GRANT OPTION 在特定的权限级别上,用户在该级别上拥有(或将来可能给予)的任何权限也可以由该用户授予其他用户。假设你给一个用户INSERT 数据库上的特权。如果你同意 SELECT 数据库上的特权并指定WITH GRANT OPTION
,该用户不但可以向其他用户提供 SELECT 特权,但也 INSERT .如果你同意 UPDATE 对数据库中的用户有特权,用户可以授予 INSERT , SELECT ,以及 UPDATE .
对于非管理性用户,您不应该授予 ALTER 全球范围的特权或mysql
系统数据库。如果您这样做,用户可以尝试通过重新命名表来破坏特权系统!
有关与特定特权相关的安全风险的更多信息,请参阅 第6.2.2节,"mysql提供的特权" .
可以通过一个帐户对服务器资源的使用设置限制,如以下所述: 第6.2.16节,"规定帐户资源限额" .为此,请使用WITH
指定一个或多个的条款resource_option
价值观。未指定的限额保留其当前值。它的语法和CREATE USER 声明。详情请参阅 第13.7.1.2节,"创建用户声明" .
使用GRANT 在mysql5.7中,定义帐户资源限制是不被接受的。相反,建立或改变资源限额CREATE USER 或 ALTER USER .希望如此 GRANT 在未来的mysql版本中移除的能力。
千年发展目标和标准SQL赠款版本
mysql和标准SQL版本之间的最大差异GRANT 是:
-
Mysql将权限与主机名和用户名相关联,而不仅仅与用户名相关联。
-
标准SQL没有全局或数据库级的特权,也不支持mysql支持的所有特权类型。
-
Mysql不支持标准SQL
UNDER
特权。 -
标准的SQL权限是以分层的方式结构化的。如果您删除了一个用户,则撤销了所有授予该用户的权限。在mysql中也是如此DROP USER .看 第13.7.1.3节,"放弃用户说明" .
-
在标准SQL中,当您放下表时,将撤销表的所有特权。在标准SQL中,当您撤销权限时,基于该权限授予的所有权限也将被撤销。在mysql中,可以删除DROP USER 或 REVOKE 声明。文章来源:https://www.toymoban.com/news/detail-803997.html
-
在mysql中,有可能 INSERT 只对表中的一些列给予特权。在这种情况下,你仍然可以INSERT 表中的语句,只要您只为那些您拥有 INSERT 特权。如果不启用严格的SQL模式,则将省略列设置为其隐式默认值。在严格的模式下,如果任何省略列没有默认值,则拒绝该语句。(标准SQL要求您拥有 INSERT 所有列都有特权。)有关严格的SQL模式及隐含默认值的资料,请参阅 5.1.10节,"服务器SQL模式" ,以及 第11.6节,"数据类型默认值" .文章来源地址https://www.toymoban.com/news/detail-803997.html
到了这里,关于MySQL5.7之grant的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!