详解MySQL第三篇—DCL语句

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

DCL 语句主要是 DBA 用来管理系统中的对象权限时所使用,一般的开发人员很少使用。下面通过一个例子来简单说明一下。

创建一个数据库用户 z1,具有对 sakila 数据库中所有表的 SELECT/INSERT 权限:

1

2

3

4

5

6

7

8

9

10

11

12

mysql> grant select,insert on sakila.* to ‘z1‘@‘localhost‘ identified by ‘123‘;

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

[[email protected] ~]$ mysql -uz1 -p123

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 21671 to server version: 5.1.9-beta-log

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the buffer.

mysql> use sakila

Database changed

mysql> insert into emp values(‘bzshen‘,‘2005-04-01‘,3000,‘3‘);

Query OK, 1 row affected (0.04 sec)

由于权限变更,需要将 z1 的权限变更,收回 INSERT,只能对数据进行 SELECT 操作:

1

2

3

4

5

6

7

8

[[email protected] ~]$ mysql -uroot

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 21757 to server version: 5.1.9-beta-log

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the buffer.

mysql> revoke insert on sakila.* from ‘z1‘@‘localhost‘;

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

用户 z1 重新登录后执行前面语句:

1

2

3

4

5

6

7

8

9

10

[mysql@db3 ~]$ mysql -uz1 -p123

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 21763 to server version: 5.1.9-beta-log

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the buffer.

mysql> insert into emp values(‘bzshen‘,‘2005-04-01‘,3000,‘3‘);

ERROR 1046 (3D000): No database selected

mysql> use sakila

Database changed

mysql> insert into emp values(‘bzshen‘,‘2005-04-01‘,3000,‘3‘);

ERROR 1142 (42000): INSERT command denied to user ‘z1‘@‘localhost‘ for table ‘emp‘

以上例子中的 grant 和 revoke 分别授出和收回了用户 z1 的部分权限,达到了我们的目的。

时间: 2024-10-10 02:47:31

详解MySQL第三篇—DCL语句的相关文章

详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC 我先挖个坑,日后再细讲,这篇文章我们主要来谈谈那些可爱的锁. 什么是幻读? 幻读是在可重复读的事务隔离级别下会出现的一种问题,简单来说,可重复读保证了当前事务不会读取到其他事务已提交的 UPDATE 操作.但同时,也会导致当前事务无法感知到来自其他事务中的 INSERT 或 DELETE 操作,这就

MySQL存储过程详解 mysql 存储过程

MySQL存储过程详解  mysql 存储过程 (2010-12-13 10:59:38) 转载▼ 标签: it 分类: mysql mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保

Mysql常用show命令,show variables like xxx 详解,mysql运行时参数

MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称. b. show databases; -- 显示mysql中所有数据库的名称. c. show columns from table_n

iOS学习之UINavigationController详解与使用(三)ToolBar

1.显示Toolbar  在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopyprint? [self.navigationController  setToolbarHidden:NO animated:YES]; [self.navigationController setToolbarHidden:NO animated:YES]; 2.在ToolBar上添加UIBarBu

详解mysql中的Using与On的用法

多用才可以体会各个关键字的用法啊... 原文来自[http://bbs.php100.com/read-htm-tid-148469.html] 在用Join进行多表联合查询时,我们通常使用On来建立两个表的关系.其实还有一个更方便的关键字,那就是Using.那么这两个关键字在使用上有啥区别呢?往下看.假设有如下两张表:    mysql> select * from pets; +---------+---------+--------+-----------+ | pets_id | ani

Cstyle的札记,Freertos内核详解,第2篇

<span style="white-space:pre"> </span>RTOS里面最常见也最核心的数据结构,双向链表实现. VS 2008下可编译测试. <pre name="code" class="cpp">/** @file Copyright (c) 2008 - 2014, MX.Studio All rights reserved. Created by Cstyle **/ #ifndef

Cstyle的札记,Freertos内核详解,第3篇

<span style="white-space:pre"> </span>RTOS里面最常见的以及最核心的数据结构,队列的实现.可在VS2008 下编译测试. /** @file Copyright (c) 2008 - 2014, MX.Studio All rights reserved. Created by Cstyle **/ #ifndef _QUEUE_H_ #define _QUEUE_H_ #ifdef __cplusplus extern

【three.js详解之一】入门篇

[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择. 博主目前也在学习three.js,发现相关资料非常稀少,甚至官方的api文档也非常粗糙,很多效果需要自己慢慢敲代码摸索.所以我写这个教程的目的一是自己总结,二是与大家分享. 本篇是系列教程的第一篇:入门篇.在这篇文章中,我将以一个简单的demo为例,阐述thre

[转]iOS学习之UINavigationController详解与使用(三)ToolBar

转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController 接上篇,我们接着讲Navigation 的Toolbar. 1.显示Toolbar  在RootViewController.m的- (void)viewDidLoad方法中添加代码,这样Toobar就显示出来了. [cpp] view plaincopy