作者热门文章
- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
数据控制语言,用来定义访问权限和安全级别。主要包含包括 grant , revoke 关键字 。
- grant 授予权限
- revoke 回收权限
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user[IDENTIFIED BY [PASSWORD] 'password']] ...
[WITH with_option [with_option]...]
参数 | 参数说明 |
---|---|
priv_type |
参数表示权限类型 |
columns_list |
参数表示权限作用于哪些列上,省略该参数时,表示作用于整个表 |
object_type |
参数用于指定权限对象 |
priv_level |
参数用于指定权限级别 |
user |
参数表示用户账户;由用户名和主机名构成,格式是“'username'@'hostname'” |
IDENTIFIED BY |
参数用来为用户设置密码 |
password |
参数是用户的新密码 |
WITH |
一个或多个 with_option 参数 |
with_option 参数一共5个选项 。
with_option参数 | 参数说明 |
---|---|
GRANT OPTION |
被授权的用户可以将这些权限赋予给别的用户 |
MAX_QUERIES_PER_HOUR count |
设置每个小时可以允许执行 count 次查询 |
MAX_UPDATES_PER_HOUR count |
设置每个小时可以允许执行 count 次更新 |
MAX_CONNECTIONS_PER_HOUR count |
设置每小时可以建立 count 个连接 |
MAX_USER_CONNECTIONS count |
设置单个用户可以同时具有的 count 个连接 |
权限类型分类 。
权限类型 | 说明 |
---|---|
数据库权限 |
和一个具体的数据库中的所有表相关。例如,可以在已有的数据库 mytest 中创建新表的权限 |
表权限 |
和一个具体表中的所有数据相关。例如,可以使用 SELECT 语句查询表 students 的所有数据的权限 |
列权限 |
和表中的一个具体列相关。例如,可以使用 UPDATE 语句更新表 students 中 name 列的值的权限 |
用户权限 |
和 MySQL 中所有的数据库相关。例如,可以删除已有的数据库或者创建一个新的数据库的权限 |
① 授予数据 库 权限时,<权限类型>可以指定为以下值 。
权限名称 | 对应user表中的字段 | 说明 |
---|---|---|
SELECT |
Select_priv | 表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。 |
INSERT |
Insert_priv | 表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。 |
DELETE |
Delete_priv | 表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。 |
UPDATE |
Update_priv | 表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。 |
REFERENCES |
References_priv | 表示授予用户可以创建指向特定的数据库中的表外键的权限。 |
CREATE |
Create_priv | 表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。 |
ALTER |
Alter_priv | 表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。 |
SHOW VIEW |
Show_view_priv | 表示授予用户可以查看特定数据库中已有视图的视图定义的权限。 |
CREATE ROUTINE |
Create_routine_priv | 表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。 |
ALTER ROUTINE |
Alter_routine_priv | 表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。 |
INDEX |
Index_priv | 表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。 |
DROP |
Drop_priv | 表示授予用户可以删除特定数据库中所有表和视图的权限。 |
CREATE TEMPORARY TABLES |
Create_tmp_table_priv | 表示授予用户可以在特定数据库中创建临时表的权限。 |
CREATE VIEW |
Create_view_priv | 表示授予用户可以在特定数据库中创建新的视图的权限。 |
EXECUTE ROUTINE |
Execute_priv | 表示授予用户可以调用特定数据库的存储过程和存储函数的权限。 |
LOCK TABLES |
Lock_tables_priv | 表示授予用户可以锁定特定数据库的已有数据表的权限。 |
ALL 或 ALL PRIVILEGES 或 SUPER |
Super_priv | 表示以上所有权限/超级权限 |
② 授予 表 权限时,<权限类型>可以指定为以下值:
权限名称 | 对应user表中的字段 | 说明 |
---|---|---|
SELECT |
Select_priv | 授予用户可以使用 SELECT 语句进行访问特定表的权限 |
INSERT |
Insert_priv | 授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限 |
DELETE |
Delete_priv | 授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限 |
DROP |
Drop_priv | 授予用户可以删除数据表的权限 |
UPDATE |
Update_priv | 授予用户可以使用 UPDATE 语句更新特定数据表的权限 |
ALTER |
Alter_priv | 授予用户可以使用 ALTER TABLE 语句修改数据表的权限 |
REFERENCES |
References_priv | 授予用户可以创建一个外键来参照特定数据表的权限 |
CREATE |
Create_priv | 授予用户可以使用特定的名字创建一个数据表的权限 |
INDEX |
Index_priv | 授予用户可以在表上定义索引的权限 |
ALL 或 ALL PRIVILEGES 或 SUPER |
Super_priv | 所有的权限名 |
③ 授予 列 权限时,<权限类型>可以指定以下值 。
权限名称 | 对应user表中的字段 | 说明 |
---|---|---|
SELECT |
Select_priv | 授予用户可以使用 SELECT 语句进行访问特定表的权限 |
INSERT |
Insert_priv | 授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限 |
UPDATE |
Update_priv | 授予用户可以使用 UPDATE 语句更新特定数据表的权限 |
④授予 用户 权限时,<权限类型> 除了可以指定为授予数据库权限,还可以指定以下值 。
权限名称 | 说明 |
---|---|
CREATE USER |
表示授予用户可以创建和删除新用户的权限 |
SHOW DATABASES |
表示授予用户可以使用 SHOW DATABASES 语句查看所有已有的数据库的定义的权限 |
权限级别 | 说明 |
---|---|
* |
表示当前数据库中的所有表 |
*.* |
表示所有数据库中的所有表 |
db_name.* |
表示某个数据库中的所有表,db_name 指定数据库名 |
db_name.tbl_name |
表示某个数据库中的某个表或视图,db_name 指定数据库名,tbl_name 指定表名或视图名 |
db_name.routine_name |
表示某个数据库中的某个存储过程或函数,routine_name 指定存储过程名或函数名 |
TO 子句 |
如果权限被授予给一个不存在的用户,MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户设置密码 |
REVOKE priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user]...
参数 | 参数说明 |
---|---|
priv_type |
参数表示权限的类型 |
column_list |
参数表示权限作用于哪些列上,没有该参数时作用于整个表上 |
user |
参数由用户名和主机名构成,格式为“username'@'hostname'” |
① 运维童鞋想要查询所有用户的权限 。
select * FROM mysql.user;
②运维童鞋想要创建一个新的用户testXiezhr,密码为testXiezhr。并授予test用户所有的数据 查询、插入权限 。
# 创建用户并授权
mysql> GRANT SELECT,INSERT ON *.*
-> TO 'testXiezhr'@'localhost'
-> IDENTIFIED BY 'testXiezhr'
-> WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.01 sec)
# 使用 SHOW GRANTS 语句查询用户 testXiezhr的权限
mysql> show grants for 'testXiezhr'@localhost;
+---------------------------------------------------------------------------+
| Grants for testXiezhr@localhost |
+---------------------------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'testXiezhr'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)
③ 运维童鞋想要 收回 testXiezhr用户的插入权限 。
# 使用revoke关键字收回insert 权限
mysql> REVOKE INSERT ON *.* FROM 'testXiezhr'@'localhost';
Query OK, 0 rows affected (0.00 sec)
#使用 SHOW GRANTS 语句查询用户 testXiezhr的权限,我们发现insert 权限没有了
mysql> show grants for 'testXiezhr'@localhost;
+-------------------------------------------------------------------+
| Grants for testXiezhr@localhost |
+-------------------------------------------------------------------+
| GRANT SELECT ON *.* TO 'testXiezhr'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)
最后此篇关于【必知必会的MySQL知识】④DCL语言的文章就讲到这里了,如果你想了解更多关于【必知必会的MySQL知识】④DCL语言的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
很多人在群里问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待。殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什
我是一名优秀的程序员,十分优秀!