我们使用DDL的"CREATE USER"语句创建用户,新的SQL用户不允许访问属于其他SQL用户的表,也不能立即创建自己的表,它必须被授权。可以授予的权限包括以下几组:

1.列权限:和表中的一个具体列相关

2.表权限:和一个具体数据表中所有数据相关

3.数据库权限:和一个具体数据库中所有数据表相关

4.用户权限:和MySQL所有的数据库相关

可以使用SHOW GRANTS命令查看当前用户的权限。

SHOW GRANTS;/显示当前用户权限
SHOW GRANTS FOR 'pinnsvin'@'localhost';/显示指定用户权限
SHOW GRANTS FOR CURRENT_USER();/显示当前用户权限

1.GRANT授权语句

语法:

GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH {GRANT OPTION | resource_option} ...]
/代理
GRANT PROXY ON user_specification
TO user_specification [, user_specification] ...
[WITH GRANT OPTION]/联级授权,选了此项,该用户有权将自己的权限授予自己创建的子用户
/授权目标对象类型
object_type: {
TABLE
| FUNCTION
| PROCEDURE
}
/授权目标
priv_level: {
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
}
/授权用户
user_specification:
user [ auth_option ] auth_option: {
IDENTIFIED BY 'auth_string'
| IDENTIFIED BY PASSWORD 'hash_string'
| IDENTIFIED WITH auth_plugin
| IDENTIFIED WITH auth_plugin AS 'hash_string'
}
/SSL设置
ssl_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 /允许用户同时连接服务器的数量
}

实例:

/先要创建一个用户,创建了一个名为jeffrey,登录主机为localhost,密码为mypass的用户
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
/授予了用户jeffrey@localhost对数据库db1下所有数据表所有操作权限
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
/授予了用户'jeffrey'@'localhost'对数据库db2下invoice数据表的查询权限
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
/USAGE意指无权限,用户jeffrey@localhost 在一个小时内只有90次查询权限
GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;

2.REVOKE撤销授权语句

语法:

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] ...

实例:

/撤回了用户jeffrey@localhost对数据库db1下所有数据表所有操作权限
REVOKE ALL ON db1.* FROM 'jeffrey'@'localhost';
/撤回了用户'jeffrey'@'localhost'对数据库db2下invoice数据表的查询权限
REVOKE SELECT ON db2.invoice FROM 'jeffrey'@'localhost';

MySQL的数据控制语言DCL的更多相关文章

  1. mysql基础之-mysql数据控制语言DCL(七)

    0x01 mysql中的权限分布 mysql中的用户信息都存储在系统数据库mysql的user表中 查询语句:select host,user,password from mysql.user; 创建 ...

  2. MySQL之数据定义语言(DDL)

    写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...

  3. oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言

    DCL 数据控制语言 Data control language 之前说过的授权和收权利语句 grant, revoke DDL 数据定义语言 Data define language create ...

  4. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

  5. Oracle数据控制语言(DCL)

    数据控制语言 用来授予或者回收访问数据库中的各种对象,如表 .视图 .索引 等 基本的操作如下: --创建用户 CREATE USER jim IDENTIFIED BY changeit; --给用 ...

  6. MySQL学习笔记3——DCL

    DCL(数据控制语言) 1.创建用户 *CREATE USER 用户名@IP地址 IDENTIFIED BY '密码'; >用户只能在指定的IP地址上登录*CREATE USER 用户名@'%' ...

  7. mysql 插入数据失败防止自增长主键增长的方法

    mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说 ...

  8. MySQL mysqldump数据导出详解

    介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明 ...

  9. MySQL数据库数据存放位置修改

    MySQL数据库数据存放位置修改 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方 ...

随机推荐

  1. 898. Bitwise ORs of Subarrays

    We have an array A of non-negative integers. For every (contiguous) subarray B = [A[i], A[i+1], ..., ...

  2. 关于ManyToMany的一点补充

    1.先看model的定义 user表: class User(models.Model): """ 用户表 """ username = m ...

  3. [Auto Testing] 工具准备:Selenium 与 ChromeDriver

    <留存> Selenium http://selenium-release.storage.googleapis.com/index.html https://www.seleniumhq ...

  4. vue-cli新建vue项目安装axios后在IE下报错

    使用脚手架新建了一个vue项目,可以在IE9+浏览器运行,但是在添加了axios后,在IE下就报错了 首先是安装axios,在命令行执行: $ npm install axios -s //执行命令, ...

  5. 微信小程序云函数 添加数据到数据库

    1.新建小程序,建立云开发快速启动模板 这里和普通小程序的区别有三点 一是 project.config.json写上云函数所在目录"cloudfunctionRoot": &qu ...

  6. NOIP2017滚粗记【下】

    (续上篇) Day1: 下午,全竞赛队的人都在竞赛室颓~,再次吐槽下我校网管科的,下午普及考试又把竞赛室的网络切掉了,还好我们机制地准别了一堆单机游戏.普及组考完后,网络又恢复正常了,但晚上9点左右又 ...

  7. 【洛谷十月月测】 P3927 SAC E#1 - 一道中档题 Factorial

    题目传送门:https://www.luogu.org/problemnew/show/P3927 题目大意:给你两个正整数n,k,求n!在k进制下末尾零的数量. 我们通过简单的数学分析,便可以发现, ...

  8. AngularJS入门之数据绑定

    本篇我们看一下AngularJS中的数据绑定.虽然我们直到这篇才提到数据绑定,但事实上在前面几篇中我们已经非常熟练的运用AngularJS的数据绑定功能了! ngBind(ng-bind)/ {{ e ...

  9. 基于Web实现网络拓扑图

    想想好像好久没用写博客了! 由于最近想跳槽了(ps:尽管公司挽留,提出一些异与往常的挽留“制度”,But确实已经死心了) ,发现前一段时间一些做Hadoop,和Spark同事时常来请教网络拓扑图的有关 ...

  10. pict总结

    pict总结 pict总结 Friday, September 25, 2015 12:03 PM pict:微软出品的一个自动生成case工具,运用组合测试方法 1 pict安装 2 pict环境变 ...