DCL数据控制语言-用户权限

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: DCL数据控制语言-用户权限

公众号merlinsea


  • Mysql数据库的自带的用户权限user表介绍

1、user表的表结构

   mysql数据库中有一个user表,这个表中记录了每一个用户登陆这台数据库服务器的权限和密码信息。(Host+User)作为主键,即每个用户登陆改mysql服务器的客户端的ip是有限制的,ip不同可能密码也不同。


mysql> show create table user\G
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
  `ssl_cipher` blob NOT NULL,
  `x509_issuer` blob NOT NULL,
  `x509_subject` blob NOT NULL,
  `max_questions` int(11) unsigned NOT NULL DEFAULT '0',
  `max_updates` int(11) unsigned NOT NULL DEFAULT '0',
  `max_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password',
  `authentication_string` text COLLATE utf8_bin,
  `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `password_last_changed` timestamp NULL DEFAULT NULL,
  `password_lifetime` smallint(5) unsigned DEFAULT NULL,
  `account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'


2、user表的参数说明


Host #可以登陆的客户端ip, %表示任意的客户端ip都可以登陆
User #用户名
Select_priv #查询权限
Insert_priv #插入权限
Delete_priv #删除权限
Create_priv #创建权限
Grant_priv  #授权指令,指该用户是否拥有给其他用户授权的权限
authentication_string #登陆密码【这个是加密形式的密文】


3、查看root用户的权限


select * from user where User='root'\G


  • 控制用户权限相关命令

   说明点:下面的命令是用户root给其他普通用户的授权命令,即只有拥有了授权权限的的用户才能对其他普通用户授于增删改查的权限,通常而言只有root用户才能对普通用户进行授权!!!


1、创建用户【这里只创建用户但没有对其进行授予增删改查的权限】


语法:create user 'username'@'host' identifified by 'password';
#创建一个pig用户,并指定登录密码:pig123456,可以在任何一台远程主机都可以登录
#这样创建的pig用户由于没有授权增删改查权限,因此该用户登陆了也用不了数据库
create user 'pig'@'%' identified by 'pig123456';
#创建一个pig用户,并指定登录密码:为空,指定在120网段的机器登录
create user 'pig'@'120.%.%.%' identified by '';


2、查看pig用户的权限


select * from mysql.user where user='pig'\G
show grants for 'pig'@'%';


3、删除用户

【注:需要指定用户名和终端ip】


drop user 'pig'@'%';
delete from mysql.user where user='pig';


4、授权增删改查命令


语法:
grant 权限1,权限2 on 数据库的哪张表 to '用户'@'host' identified by 'password';
权限类型:all privileges【所有权限】,select【查询权限】,update【修改权限】,insert【插入权限】,delete【删除权限】
库表类型:*.*【所有库的所有表】,merlin.*【merlin库的所有表】,merlin.employee【merlin库的employee表】
对【现有】用户pig授予所有库所有表所有权限。
grant all privileges on *.* to 'pig';
flush privileges;
创建一个【新】用户dog授予merlin库的所有权限,登录密码dog123456,任何一台主机登录
grant all privileges on merlin.* to 'dog'@'%' identified by 'dog123456';
flush privileges;
创建一个【新】用户cat授予merlin库的employee表 查与修改权限,登录密码cat123456,任何一台主机登录
grant select,update on merlin.employee to 'cat'@'%' identified by 'cat123456'
flush privileges;


5、撤销权限的命令


语法:
revoke 权限1,权限2..... on 数据库对象 from '用户'@'host';
回收pig用户的所有权限(注意:并没有回收它的登录权限)
revoke all privileges on *.* from 'pig'@'%';
flush privileges;
回收pig用户的所有权限(并回收它的登录权限)
delete from mysql.user where user='pig';
flush privileges;


关于leetcode算法训练营:

   加我微信号私聊参加训练营~

本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等等,所以快加入训练营吧,我们一起进步

奔跑的小梁,公众号:梁霖编程工具库算法训练营,快来参加
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
SQL Oracle 关系型数据库
DDL、DML和DCL的区别与理解
DDL、DML和DCL的区别与理解
247 1
DDL、DML和DCL的区别与理解
|
SQL 关系型数据库 数据库
day02:DML DQL DCL
day02:DML DQL DCL
84 0
|
4月前
|
SQL 存储 安全
DDL、DML、DCL 的区别
【8月更文挑战第1天】
257 0
DDL、DML、DCL 的区别
|
5月前
|
SQL 关系型数据库 MySQL
MySQL DCL(数据控制语言)详解与实践
MySQL DCL(数据控制语言)详解与实践
|
5月前
|
SQL 关系型数据库 MySQL
数据控制语言DCL
数据控制语言DCL
38 0
|
SQL 关系型数据库 MySQL
MySQL 数据控制语言(DCL):管理用户权限
MySQL 是一个强大的关系型数据库管理系统,提供了丰富的功能和选项来管理数据库和用户。数据库管理员(DBA)通常使用数据控制语言(Data Control Language,简称 DCL)来管理用户的权限和访问。 本文将详细介绍 MySQL DCL 的基本概念,包括如何创建用户、授权和撤销权限等,同时提供示例代码以帮助您更好地理解。
457 2
|
7月前
|
SQL 安全 关系型数据库
关系型数据库REVOKE语句
`REVOKE` 语句用于在关系型数据库中撤销用户或角色的权限,以增强安全性。基本语法包括指定权限类型(如 `SELECT`)、对象类型和名称,以及目标用户或角色。可选地,可以使用 `GRANT OPTION FOR` 撤销授予权限的能力,以及 `CASCADE` 或 `RESTRICT` 处理依赖关系。示例:`REVOKE SELECT ON TABLE employees FROM john;` 这句话撤销用户 `john` 对 `employees` 表的 `SELECT` 权限。各数据库系统可能有不同的语法细节,建议参照具体系统的官方文档。
139 3
|
SQL 关系型数据库 MySQL
Mysql数据库 20.DCL数据控制语言
Mysql数据库 20.DCL数据控制语言
73 0
|
SQL 算法 关系型数据库
DCL数据控制语言-密码和IP
DCL数据控制语言-密码和IP
|
SQL 数据库 索引
DQL、DML、DDL、DCL的概念与区别
DQL、DML、DDL、DCL的概念与区别