我们使用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. 【ocp新题】OCP 12c 062认证考试出现大量新题-8

    8. Which are two ways for a database service to be recognized by a listener in Oracle Database 12c? ...

  2. VC API常用函数简单例子大全(1-89)

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

  3. sublime 把 tab 转成 4 个空格

    Preferences -> Settings-User {    "tab_size":4,    "translate_tabs_to_spaces" ...

  4. Java 日期加减

    import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class Test ...

  5. 转载:在spring中嵌入activemq

    转载:http://www.dev26.com/blog/article/137 web开发站中的邮件发送使用了activemq我这是从网上找的进行了一些修改,记录下来,为了避免发送邮件时程序对用户操 ...

  6. Java CAS ABA问题发生的场景分析

    提到了CAS操作存在问题,就是在CAS之前A变成B又变回A,CAS还是能够设置成功的,什么场景下会出现这个问题呢?查了一些资料,发现在下面的两种情况下会出现ABA问题. 1.A最开始的内存地址是X,然 ...

  7. 使用Dockerfile定制镜像

    Dockerfile是一个文本文件,其中包含额一条一条的指令,每一条指令构建一层,因此每一条指令的作用就是描述这一层应当如何的构建. 以构建nginx镜像为例,使用Dockerfile构建的步骤如下: ...

  8. avalon的使用与总结

    avalon是前端MVVM框架,将所有前端代码彻底分成两部分,视图的处理通过绑定实现(angular有个更炫酷的名词叫指令),业务逻辑则集中在一个个叫VM的对象中处理.我们只要操作VM的数据,它就自然 ...

  9. POJ 1243

    #include <iostream> #include <algorithm> #include <cmath> #define MAXN 50 using na ...

  10. js时间的应用(再看看前面,会发现不一样的)

    1.年份(1970-) 获取 date.getFullYear(); 设置 date.setFullYear(2016); 2.月份(0-11) 0代表1月 获取 date.getMonth() 设置 ...