mysql属于dcl语句的是_MySQL基础:DCL语句
sql语言大致分为DCL、DDL、DML三种,本文主要介绍DCL语句。
概述
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。
关键字
GRANT
REVOKE
查看用户权限
当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限。可以使用SHOW GRANTS FOR 语句来查询用户的权限。例如:
MysqL> SHOW GRANTS FOR test;
+-------------------------------------------+
| Grants for test@% |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)
GRANT语句
参考:
对于新建的MysqL用户,必须给它授权,可以用GRANT语句来实现对新建用户的授权。
语法格式
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
}
权限类型(priv_type)
授权的权限类型一般可以分为数据库、表、列、用户。
授予数据库权限类型
授予数据库权限时,priv_type可以指定为以下值:
SELECT:表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。
INSERT:表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。
DELETE:表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。
UPDATE:表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。
REFERENCES:表示授予用户可以创建指向特定的数据库中的表外键的权限。
CREATE:表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。
ALTER:表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。
SHOW VIEW:表示授予用户可以查看特定数据库中已有视图的视图定义的权限。
CREATE ROUTINE:表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。
ALTER ROUTINE:表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。
INDEX:表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。
DROP:表示授予用户可以删除特定数据库中所有表和视图的权限。
CREATE TEMPORARY TABLES:表示授予用户可以在特定数据库中创建临时表的权限。
CREATE VIEW:表示授予用户可以在特定数据库中创建新的视图的权限。
EXECUTE ROUTINE:表示授予用户可以调用特定数据库的存储过程和存储函数的权限。
LOCK TABLES:表示授予用户可以锁定特定数据库的已有数据表的权限。
SHOW DATABASES:表示授权可以使用SHOW DATABASES语句查看所有已有的数据库的定义的权限。
ALL或ALL PRIVILEGES:表示以上所有权限。
授予表权限类型
授予表权限时,priv_type可以指定为以下值:
SELECT:授予用户可以使用 SELECT 语句进行访问特定表的权限。
INSERT:授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限。
DELETE:授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限。
DROP:授予用户可以删除数据表的权限。
UPDATE:授予用户可以使用 UPDATE 语句更新特定数据表的权限。
ALTER:授予用户可以使用 ALTER TABLE 语句修改数据表的权限。
REFERENCES:授予用户可以创建一个外键来参照特定数据表的权限。
CREATE:授予用户可以使用特定的名字创建一个数据表的权限。
INDEX:授予用户可以在表上定义索引的权限。
ALL或ALL PRIVILEGES:所有的权限名。
授予列(字段)权限类型
授予列(字段)权限时,priv_type的值只能指定为SELECT、INSERT和UPDATE,同时权限的后面需要加上列名列表(column-list)。
授予创建和删除用户的权限
授予列(字段)权限时,priv_type的值指定为CREATE USER权限,具备创建用户、删除用户、重命名用户和撤消所有特权,而且是全局的。
ON
有ON,是授予权限,无ON,是授予角色。如:
-- 授予数据库db1的所有权限给指定账户
GRANT ALL ON db1.* TO 'user1'@'localhost';
-- 授予角色给指定的账户
GRANT 'role1','role2' TO 'user1'@'localhost','user2'@'localhost';
对象类型(object_type)
在ON关键字后给出要授予权限的object_type,通常object_type可以是数据库名、表名等。
权限级别(priv_level)
指定权限级别的值有以下几类格式:
*:表示当前数据库中的所有表。
*.*:表示所有数据库中的所有表。
db_name.*:表示某个数据库中的所有表,db_name指定数据库名。
db_name.tbl_name:表示某个数据库中的某个表或视图,db_name指定数据库名,tbl_name指定表名或视图名。
tbl_name:表示某个表或视图,tbl_name指定表名或视图名。
db_name.routine_name:表示某个数据库中的某个存储过程或函数,routine_name指定存储过程名或函数名。
被授权的用户(user)
语法格式如下:
'user_name'@'host_name'
Tips:'host_name'用于适应从任意主机访问数据库而设置的,可以指定某个地址或地址段访问。
可以同时授权多个用户。
user表中host列的默认值
host
说明
%
匹配所有主机
localhost
localhost不会被解析成IP地址,直接通过UNIXsocket连接
127.0.0.1
会通过TCP/IP协议连接,并且只能在本机访问
::1
::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
@H_144_404@
host_name格式有以下几种:
使用%模糊匹配,符合匹配条件的主机可以访问该数据库实例,例如192.168.2.%或%.test.com;
使用localhost、127.0.0.1、::1及服务器名等,只能在本机访问;
使用ip地址或地址段形式,仅允许该ip或ip地址段的主机访问该数据库实例,例如192.168.2.1或192.168.2.0/24或192.168.2.0/255.255.255.0;
省略即默认为%。
身份验证方式(auth_option)
auth_option为可选字段,可以指定密码以及认证插件(MysqL_native_password、sha256_password、caching_sha2_password)。
加密连接(tls_option)
tls_option为可选的,一般是用来加密连接。
用户资源限制(resource_option)
resource_option为可选的,一般是用来指定最大连接数等。
参数
说明
MAX_QUERIES_PER_HOUR count
每小时最大查询数
MAX_UPDATES_PER_HOUR count
每小时最大更新数
MAX_CONNECTIONS_PER_HOUR count
每小时连接次数
MAX_USER_CONNECTIONS count
用户最大连接数
@H_144_404@
权限生效
若要权限生效,需要执行以下语句:
FLUSH PRIVILEGES;
REVOKE语句
REVOKE语句主要用于撤销权限。
语法格式
REVOKE语法和GRANT语句的语法格式相似,但具有相反的效果
REVOKE
priv_type [(column_list)]
[,priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [,user] ...
REVOKE ALL [PRIVILEGES],GRANT OPTION
FROM user [,user] ...
REVOKE PROXY ON user
FROM user [,user] ...
若要使用REVOKE语句,必须拥有MysqL数据库的全局CREATE USER权限或UPDATE权限;
第一种语法格式用于回收指定用户的某些特定的权限,第二种回收指定用户的所有权限;
相关文章
总结
以上是编程之家为你收集整理的MySQL基础:DCL语句全部内容,希望文章能够帮你解决MySQL基础:DCL语句所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
mysql属于dcl语句的是_MySQL基础:DCL语句相关推荐
- mysql 子查询多个字段_MySql基础
本文章目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ...
- mysql属于dcl语句的是_MySQL基础:DCL语句总结
SQL语言大致分为DCL.DDL.DML三种,本文主要介绍MySQL 5.7版本DCL语句. 概述 DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可 ...
- mysql查询姓张的同学_Mysql 基础2 (sql查询语句)
1 查询所有列 select * from 表名: 2.查询指定列 select 字段名1,字段名2 from 表名: 3.查询时添加常量 select 字段名 as 常量名 from 表名:把字段名 ...
- mysql支持事务的存储引擎_MySQL基础(三)【MySQL事务与存储引擎】
3.1-数据库事务 什么是事务 一系列有序的数据库操作: 要么全部成功 要么全部回退到操作前的状态 中间状态对其他连接不可见 事务的基本操作: 基本操作 说明 start transaction 开始 ...
- mysql 语句性能分析_mysql的sql语句的性能诊断分析
1> explain SQL,类似于Oracle中explain语句 例如:explain select * from nad_aditem; 2> select benchmark(co ...
- mysql默认join是什么类型_MySQL:join语句类型
MySQL:join语句类型 join从句的类型有以下几种: 内链接(inner) 右外连接(right outer) 左外连接(left outer) 全外连接(full outer) 交叉链接(c ...
- mysql多表查询sql语句怎么写_MySQL基本SQL语句之单表查询、多表查询和子查询
一.简单查询: 基本语法: SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * F ...
- mysql redo 物理复制 彭立勋_MySQL基础技能与原理——基本原理.ppt
MySQL基础技能与原理--基本原理.ppt MySQL基础技能与原理基本原理,MySQL DBA Team,彭立勋(),内容概要,1. MySQL体系架构 2. InnoDB特点 3. MySQL高 ...
- mysql语句更新顺序_MySQL的Update语句Set顺序问题
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 1. 测试一 create table test(id int, tag int, num int); insert in ...
最新文章
- 华为、北大、悉尼大学:最新视觉Transformer综述(2017-2020年)
- TCP 、UDP各自的优缺点
- 使用ulimit设置文件最大打开数
- Sublime Text2,跨平台神级编辑器乱码问题解决
- Kendo UI Professional Q3 2015 Beta发布[附下载]
- java模糊查询比对方法_Java多条件和模糊查询
- elementui获取所有树节点_element-ui tree获取子节点全选的父节点信息
- Linux下查看CPU个数(逻辑个数和物理个数)
- LeetCode(#1)————Two Sum
- s时钟画布 android,Canvas画布实现自定义时钟效果
- 一文理解 pytorch 拟合网络的过程
- linux修改jdk文件保存,Linux下更换jdk和配置环境变量详解
- java编程剪刀石头布_Java实现的剪刀石头布游戏示例
- CGPathAddArc
- 101-150的质数
- python 发送邮件正文字体设置_python 发送邮件
- 阿里云系统盘扩容及数据盘分区、格式化分区、挂载、取消挂载
- 微带贴片天线的分析方法-传输线模型法
- Quantifying causality in data science with quasi-experiments
- 手把手教你学AltiumDesigner之新建元件封装库