SQL语言大致分为DCL、DDL、DML三种,本文主要介绍MySQL 5.7版本DCL语句。

概述

DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。

关键字

GRANT

REVOKE

查看用户权限

当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限。可以使用SHOW GRANTS FOR 语句来查询用户的权限。例如:

mysql> SHOW GRANTS FOR test;

+-------------------------------------------+

| Grants for [email protected]% |

+-------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' |

+-------------------------------------------+

1 row in set (0.00 sec)

GRANT语句

参考:

GRANT Syntax

MySQL用户授权(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)

参考:Specifying Account Names

语法格式如下:

'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

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

用户最大连接数

权限生效

若要权限生效,需要执行以下语句:

FLUSH PRIVILEGES;

REVOKE语句

参考:REVOKE Syntax

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语句总结"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/9434.html

mysql自动提交 dcl语句_MySQL基础:DCL语句总结相关推荐

  1. mysql自动提交的概念_MySQL入门之事务概念

    MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过 set autocommit=0 禁止自动提交 set autocommit=1开启自动提交 mysql中INNOD ...

  2. java mysql 自动提交_详解MySQL与Spring的自动提交(autocommit)

    1 MySQL的autocommit设置 MySQL默认是开启自动提交的,即每一条DML(增删改)语句都会被作为一个单独的事务进行隐式提交.如果修改为关闭状态,则执行DML语句之后要手动提交 才能生效 ...

  3. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  4. linux mysql无符号整型_Mysql基础

    一.SQL ( Structure query language ) 结构化查询语言 #SQL语言分为4个部分:DDL(定义).DML(操作).DQL(查询).DCL(控制) "" ...

  5. java mysql 自动提交_Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧...

    学习Mybatis时提到了JDBC方式需要自己手动提交事务,如果不加session.commit会导致数据库的数据无法正常插入(程序本身又不给你报错,还装出一副我已经插入成功的样子) SqlSessi ...

  6. mysql事务控制(xa分布式事务)和锁定语句_MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务...

    XA 事务 InnoDB 存储引擎支持 XA 事务.MySQL XA 的实现基于 X/Open CAE 文档 Distributed Transaction Processing: The XA Sp ...

  7. mysql 人名用什么类型_MySQL 基础(二)

    封面图片来源:沙沙野 01. DDL 数据定义语言 1). 创建表的基本语法 CREATE TABLE 表名( 字段名1 数据类型 约束规则, 字段名2 数据类型, 字段名3 数据类型, ..... ...

  8. mysql 存过 if语句_mysql存储过程 if 语句

    MySql的存储过程 存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存 ...

  9. mysql 自动备份 发邮件_MYSQL自动备份并发送邮件工具

    最近在开发小程序,由于服务器只有一台,所以不能数据库异机备份,出于数据安全的考虑,就做了一个数据库定时备份并发送邮件到自己的邮箱的小工具,先看下工具界面 这个工具主要涉及到三个部分 1.MYSQL自动 ...

最新文章

  1. VMware Coding Challenge: Possible Scores Summary: static
  2. 通过timer控件和窗体的opacity属性,轻松实现窗体的淡入淡出
  3. 小程序的项目结构设计
  4. javascript小实例,多种方法实现数组去重问题
  5. bootstrap项目更改为vue_取代Jquery,用Vue 构建Bootstrap 4 应用
  6. php heredoc 用法
  7. android按钮对齐方式,表格行中三个按钮的对齐方式Android
  8. iOS TableView性能优化
  9. spark-sql字段级血缘关系实现
  10. 4484: [Jsoi2015]最小表示
  11. python(应用)中文输出拼音
  12. (附源码)基于java的校园二手书籍交易平台 毕业设计131558
  13. 【蓝桥杯】PREV-55 小计算器
  14. python find() 和 index() 方法
  15. 2022工作中遇到的问题二
  16. 瞧,工程师绘图最佳实践!
  17. Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏
  18. 保姆级教学---怎样使用码云把本地的代码托管到远程的仓库
  19. 景区如何利用自媒体做营销推广?
  20. 4G LTE模块通过树莓派的IO进行复位操作的演示

热门文章

  1. “AI+”赋能元宇宙,一文探讨智能交互的技术支撑
  2. EMNLP 2021 | ST-ToD:小样本场景下的任务型对话预训练
  3. 我不建议你这样进军人工智能……
  4. java处理最后一周_Java获取某年某周的最后一天
  5. java的继承_java中的继承(一)
  6. 【SQL编程】MySQL 5.7.28 版本使用 SQL 直接解析 JSON 字符串(判断是否是合法JSON类型+文本深度+文本长度+值类型+keys获取+值获取+不同深度数据获取)
  7. java linkedlist源码_Java集合之LinkedList源码分析
  8. LeetCode 26 删除有序数组中的重复项
  9. 牛客题霸 NC3 链表中环的入口结点
  10. PaddleLabel——重新识别失败【Can not recognise the detection box in 文件. Please change manually 】解决方案