SQL-用户管理与用户权限

news2024/9/27 12:17:25

 🎉欢迎您来到我的MySQL基础复习专栏

☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹
✨博客主页:小小恶斯法克的博客
🎈该系列文章专栏:重拾MySQL
🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏
📜 感谢大家的关注! ❤️

目录

DCL-介绍

DCL-管理用户

DCL - 权限控制


DCL-介绍

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。

 

DCL-管理用户

1.查询用户

在mysql数据库中,用户的信息,用户所具有的权限的信息,都是存放在系统数据库mysql的user表中,所以我们可以直接访问mysql数据库,然后查询use表就行

打开表之后有4个用户,前三个没有用过,我们只用过一个root,在这张表中,第一个字段叫host,指的是主机,在mysql中要创建一个用户或者去删除一个用户,需要通过用户名,和host主机地址同时定位,用户名和主机地址才能够完整的定位一个mysql的用户,这个主机地址指的是当前这个用户只能在哪个主机上访问当前mysql服务器,那么localhost代表只能够在本机访问,能不能远程访问呢?不能

use mysql ;

select * from user ;



select * from mysql.user ;  --这里为什么是mysql.user,你要么用上面的组合,要么用下面的语句才能访问到user,因为user表是在mysql这个数据库中的,你要先切换到那个数据库中,或者用这个语句

 执行如下:

2.创建用户

主机名指的就是在哪一个主机上,这个用户可以访问当前mysql,后面identified指定密码,就是当前用户的访问密码

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

3.修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;

4.删除用户

DROP USER '用户名'@'主机名' ;

注意事项:

1.在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。

2.主机名可以使用 % 通配。

3.这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用。

案例:

1.创建用户itczh, 只能够在当前主机localhost访问, 密码123456 ;

但是这个用户有没有权限呢?大家会发现表格当中都是N,也就是no,此时我们可以通过命令行去访问一下,通过itczh这个用户去访问mysql,我们连接好了itczh用户,然后去show一下里面所有数据库,只访问到了一个,而root用户可以查询到那么多数据库,原因是什么呢?

原因是因为我们刚刚是仅仅创建了itczh这个用户,它可以访问mysql,但是它没有访问其他数据库的权限,目前只是创建了用户,但是没有给这个用户权限

create user 'itczh'@'localhost' identified by '123456' ;

执行如下:

2.创建用户czh, 可以在任意主机访问该数据库, 密码123456 ;

%代表任意主机

create user 'czh'@'%' identified by '123456' ;

执行如下:

3.修改用户czh的访问密码为1234 ;

alter user 'czh'@'%' identified with mysql_native_password by '1234';

执行如下:

测试:

4.删除 itczh@localhost 用户

drop user 'itczh'@'localhost';

执行如下:

此时可以发现用户itczh已经被删除了

DCL - 权限控制

MySQL中定义了很多种权限,但是常用的就以下几种:

权限

说明

ALL, ALL PRIVILEGES

所有权限

SELECT

查询数据

INSERT

插入数据

UPDATE

修改数据

DELETE

删除数据

ALTER

修改表

DROP

删除数据库//视图

CREATE

创建数据库/

上述只是简单罗列了常见的几种权限描述,其他权限描述及含义,可以直接参考官方文档

1.查询权限

SHOW GRANTS FOR '用户名'@'主机名' ;

2.授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

3.撤销权限

如果说要给所有的数据库,所有的表赋予权限,就可以写*.*,如果指定数据库和指定表就写数据库名和表名即可

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意事项:

多个权限之间,使用逗号分隔

授权时,数据库名和表名可以使用 * 进行通配,*代表所有。

案例:

1.查询 'czh'@'%' 用户的权限

查询到的权限信息如下图,这是个什么权限呢?usage,这个指的就是我们没有其他权限,你仅仅能够连接并登录mysql而已

show grants for 'czh'@'%';

执行如下:

2.授予 'czh'@'%' 用户test数据库所有表的所有操作权限 (授权的关键字grant)

我们要授予的是test这个数据库所有表的权限,那么就是test.*, to,给哪个用户这个权限,给czh这个用户授予这个权限,那么在授权之前,再看一下czh这个用户登陆上来之后,目前能访问哪个数据库?发现它只能访问information_schema这个数据库,接下来我们去执行下面的SQL语句

grant all on test.* to 'czh'@'%';

执行如下:

此时所具有的权限是all privileges,针对的是test这个数据库的所有权限,此时我们打开命令行,通过czh用户再次访问mysql,再去看看权限,此时czh这个用户就能看间test这个数据库了

里面的表也都能看见了

3.撤销 'czh'@'%' 用户的test数据库的所有权限

revoke all on test.* from 'czh'@'%';

执行如下:

 此时就没有所有权限了,此时我们打开命令行,重新登陆czh这个用户,执行show databases;我们看一下之前给他授予的test数据库的权限还有没有了,有没有成功的被撤销

执行如下:

此时表明权限撤销成功!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1387306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用 1 JupyterLab 介绍2 安装2.1 Jupyter Kernel 与 conda 虚拟环境 3 使用3.1 安装中文语言包(Optional)3.2 启动3.3 常用快捷键3.3.1 命令模式下 3.4 远程访问个人计算机3.4.1 局域网下 1 JupyterLab 介绍 官方文档: …

鸿蒙开发笔记(一):ArkTS概述及声明式UI的使用

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。 ArkTS在TS的基础上主要扩展了如下能力: 基本语法:ArkTS定义…

给 Linux 主机添加 SSH 双因子认证

GitHub:https://github.com/google/google-authenticator-android 在信息时代,服务器安全愈发成为首要任务。Linux 主机通过 ssh 方式连接,当存在弱密码的情况下,通过暴力破解的方式会很容易就被攻破了,本文将向你展示…

一文搞懂系列——Linux C线程池技术

背景 最近在走读诊断项目代码时,发现其用到了线程池技术,感觉耳目一新。以前基本只是听过线程池,但是并没有实际应用。对它有一丝的好奇,于是趁这个机会深入了解一下线程池的实现原理。 线程池的优点 线程池出现的背景&#xf…

Lede(OpenWrt)安装和双宽带叠加

文章目录 一、Lede介绍1. 简介2. 相关网站 二、Lede安装1. 编译环境2. SHELL编译步骤3. 腾讯云自动化助手 三、Lede配置1. 电信接口配置2. 联通接口配置3. 多线多播配置4. 网速测试效果 一、Lede介绍 1. 简介 LEDE是一个专为路由器和嵌入式设备设计的自由和开源的操作系统。 …

HTML--JavaScript--引入方式

啊哈~~~基础三剑看到第三剑,JavaScript HTML用于控制网页结构 CSS用于控制网页的外观 JavaScript用于控制网页的行为 JavaScript引入方式 引入的三种方式: 外部JavaScript 内部JavaScript 元素事件JavaScript 引入外部JavaScript 一般情况下网页最好…

【动态规划】19子数组系列_最大子数组和_C++(medium)

题目链接:leetcode最大子数组和 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们找出一个具有最大和的连续子数组,返回其最大和。 算法原理: 1.状态表示…

城市信息模型平台顶层设计与实践-CIM-读书笔记

城市信息模型平台顶层设计与实践-CIM-读书笔记 1、地理空间框架 GB/T 30317—2013《地理空间框架基本规定》规定地理空间框架为:“地理信息数据及其采集、加工、交换、服务所涉及的政策、法规、标准、技术、设施、机制和人力资源的总称,由基础地理信息…

显示文件前后内容 (来get小命令 tr 、 cut……)

一、 命令 tr -------基本功能转换 tr:对文件字符进行处理 格式 tr [选项]... SET1 [SET2] SET 是一组字符串,一般都可按照字面含义理解 -d 删除 -s 压缩 -c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。 tr 1 a 出现…

【LeetCode】206. 反转链表(简单)——代码随想录算法训练营Day03

题目链接:206. 反转链表 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输…

今天吃什么小游戏(基于Flask框架搭建的简单应用程序,用于随机选择午餐选项。代码分为两部分:Python部分和HTML模板部分)

今天吃什么 一个简单有趣的外卖点饭网站,不知道吃什么的时候,都可以用它自动决定你要吃的,包括各种烧烤、火锅、螺蛳粉、刀削面、小笼包、麦当劳等午餐全部都在内。点击开始它会随意调出不同的午餐,点击停止就会挑选一个你准备要吃…

数据结构学习 jz53_1 在排序数组中查找数字1 0 ~ n - 1 中缺失的数字

关键词:查找算法 二分法 映射 位运算 题目一:统计目标成绩的出现次数 方法一:我自己写的。[ 用时: 13 m 3 s ] 二分法线性扫描 方法二:看了题解 方法一: 二分法线性查找 思路: 先二分查找找到和targe…

如何购买腾讯云服务器?图文教程超详细

腾讯云服务器购买流程很简单,有两种购买方式,直接在官方活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动…

在windows11系统上利用docker搭建ubuntu记录

我的windows11系统上,之前已经安装好了window版本的docker,没有安装的小伙伴需要去安装一下。 下面直接记录安装linux的步骤: 一、创建linux容器 1、拉取镜像 docker pull ubuntu 2、查看镜像 docker images 3、创建容器 docker run --…

Jmeter 测试脚本录制器-HTTP 代理服务器

Jmeter 测试脚本录制器-HTTP 代理服务器 Jmeter 配置代理服务器代理服务器获取请求地址示例图配置步骤 浏览器配置代理Google 浏览器插件配置代理windows 本地网络配置代理 启动录制,生成证书生成证书导入证书Jmeter 配置证书 浏览器点击页面,录制请求地…

Zabbix的多场景应用

1 zabbix更多用法 1.1 自动注册方式 zabbix自动发现 zabbix server服务端主动发现zappix agent客户端 1)在【配置】-【自动发现】创建 发现规则,设置 IP范围 检查的键值system.uname 2)在【配置】-【动作】-【发现动作】创建 动作&#x…

RabbitMQ详解(值得珍藏)

1. 基本概念 RabbitMQ是一款开源,使用Erlang编写的,基于AMQP协议的消息中间件; 提到RabbitMQ,就不得不提AMQP协议。AMQP协议是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用…

基于springboot书籍学习平台源码和论文

首先,论文一开始便是清楚的论述了平台的研究内容。其次,剖析平台需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确平台的需求。然后在明白了平台的需求基础上需要进一步地设计平台,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

2024年腾讯云服务器配置价格表(机型/磁盘/宽带/CPU)

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

我的NPI项目之设备系统启动(三) -- CDT的一个实例

上面说了这么多,这里就添加一个CDT的使用实例和简单的代码解析。 首先生成cdt_configure.xml配置文件,然后执行如下命令: python cdt_generator.py cdt_configure.xml CDT.bin; 就可以生成对应的CDT.bin文件。同时也会生成, 我们会利用ha…