MySQL的数据控制语言DCL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

我们使用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';
本文转自帅气的头头博客51CTO博客,原文链接http://blog.51cto.com/12902932/1927028如需转载请自行联系原作者

sshpp
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
90
分享
相关文章
⑤ 【MySQL】DCL语句 —— 用户管理、权限控制
⑤ 【MySQL】DCL语句 —— 用户管理、权限控制
105 0
【MySQL入门到精通-黑马程序员】MySQL基础篇-DCL
DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。
91 0
MySQL基础(四)----DCL
MySQL基础(四)----DCL
122 5
MySQL 数据控制语言(DCL):管理用户权限
MySQL 是一个强大的关系型数据库管理系统,提供了丰富的功能和选项来管理数据库和用户。数据库管理员(DBA)通常使用数据控制语言(Data Control Language,简称 DCL)来管理用户的权限和访问。 本文将详细介绍 MySQL DCL 的基本概念,包括如何创建用户、授权和撤销权限等,同时提供示例代码以帮助您更好地理解。
522 2
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
96 1
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等