Mysql(十) --- 用户权限和管理

文章目录

  • 前言
  • 1. 应用场景
  • 2.用户
    • 2.1. 查看用户
    • 2.2. 创建用户
      • 2.2.1 语法
      • 2.2.2. 注意事项
    • 2.2.3.示例
    • 2.3. 修改密码
      • 2.3.1. 语法
      • 2.3.2. 示例
    • 2.4.删除用户
      • 2.4.1.语法
      • 2.4.2.示例
  • 3. 权限和授权
    • MySQL内置支持的权限列表
    • 3.1.给用户授权
      • 3.1.1.语法
      • 3.1.2. 示例
    • 3.2.回收权限
      • 3.2.1.语法
      • 3.2.2.示例


前言

我们前面学习了许多MySQL的语法和基础知识,今天我们在学一个知识点—用户权限和管理


1. 应用场景

数据库服务安装成功后默认有一个 root 用户,可以新建和操作数据库服务中管理的所有数据。
在真实的使用过程中,通常每个应用对应着一个数据库,我们只希望某个用户只能从操作和管理当前应用对应的那个数据库,而不是操作和管理其他应用的数据库,这时就可以添加一个用户并指定用户权限
在这里插入图片描述
如上图所示:

  • root 可以访问和操纵所有的数据库:DB1,DB2,DB3,DB4
  • 普通用户1 只能访问和操纵数据库DB1
  • 普通用户2 只能访问和操纵数据库DB2
  • 只读用户1 只能访问数据库DB3
  • 只读用户2 只能访问数据库DB4

2.用户

2.1. 查看用户

MySQL的用户信息保存在mysql系统数据库的user表中,可以通过Select语句查看

-- 选择数据库
use mysql
-- 查看所有的表
show tables;
-- 查看表结构
desc user;
-- 查询user表中的记录
select host.user.authentication_string from user;

在这里插入图片描述

  • host: 允许登录的主机,相当于白名单,如果是localhost,表示只能从本机登录
  • user: 用户名
  • *_priv: 用户拥有的权限
  • authentication_string: 加密后的用户密码

2.2. 创建用户

2.2.1 语法

create user [if not exists] 'user_name'@'host_name' identified by 'auth_string';

user_name: 用户名,用单引号包裹,区分大小写
host_name: 主机或IP(段),用单引号包裹
auth_string: 真实密码,有些密码测罗不允许使用简单密码

2.2.2. 注意事项

  • 如果不指定host_name 相当于 ‘‘user_name’@’%',%表示所有主机都可以连接到数据库,强烈建议不要这样设置,因为会导致严重的安全问题
  • user_name 和 host_name 分别用单引号包裹,如果写成’user_name@host_name’,相当于 ‘user_name@host_name’@‘%’
  • host_name可以通过子网掩码设置主机范围
    • 198.0.0.0/255.0.0.0:A段网络中的任意一台主机
    • 198.51.0.0/255.25.0.0:198.51 B段网络中的任意一台主机
    • 198.51.100.0/255.255.255.0:198.51.100 C段网络中的任意一台主机
    • 198.51.100.1:只包含特定IP地址的主机
  • 从 MySQL 8.0.21开始,指定为IPv4地址的主机值可以使用CIDR表示法写入,例如198.51.100.44/24
  • 允许在IP地址中使用%通配符,比如,主机值%匹配任何主机名,198.51.100.% 匹配 198.51.100 C段网络中的任何主机。MySQL 8.0.35中已弃用,以后可能会删除

2.2.3.示例

添加一个名为xxhh的新用户,允许从本机登录

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

添加一个名为xxhh1的新用户,允许从192.168.1.1/24网段登录

create user 'xxhh1'@'192.168.1.1/24' identified by '123456';

查询

select host,user,authentication_string from user\G;

使用新用户登录
在这里插入图片描述

2.3. 修改密码

2.3.1. 语法

# 为指定用户设置密码 [推荐]
alter user 'user_name'@ 'host_name' identified by 'auth_string';
# 为指定用户设置密码
set password for 'user_name'@'host_name' = 'auth_string';
# 为当前登录用户设置密码
set password = 'auth_string'; 

2.3.2. 示例

以root身份登录,为’xxhh’@‘localhost’用户重置密码

alter user 'xxhh'@'localhost' identified by '987654321';

或者

set password for 'xxhh'@'localhost' = '123456';

以xxhh用户登录,并确定当前登录用户

select user();

修改当前登录用户的密码

set password = '987654321';

在这里插入图片描述

2.4.删除用户

2.4.1.语法

drop user [if exists] 'user_name'@'host_name'[,...];

2.4.2.示例

删除用户 ‘xxhh1’@‘192.168.1.1/24’

drop user 'xxhh1'@'192.168.1.1/24';

然后在查找结果集

select host,user,authentication_string from user;

在这里插入图片描述


3. 权限和授权

MySQL内置支持的权限列表

在这里插入图片描述

3.1.给用户授权

刚创建的用户没有任何权限,需要给他授权,如下所示:

select user()show database;

在这里插入图片描述

3.1.1.语法

grant priv_type[,priv_type ...] on priv level 
to 'user_name'@'host_name' [with grant option]
  • priv_type: 根据类型,参考根据上面的图标
  • **‘user_name’ @ ‘host_name’: ** 指定用户
  • **[with grant option]:**可选,允许用户将自己的权限授权给其他用户

3.1.2. 示例

  • 为xxhh@localhost用户授权于 study 数据库 的 select 权限
    查看xxhh用户是否有grant_priv 权限,
select user,grant_priv from user;

在这里插入图片描述
我们发现 xxhh 用户没有grant权限,因此授予权限这个任务只能交给 root 管理员去做

grant select on study.* to 'xxhh'@'localhost';

在这里插入图片描述
查看此时 xxhh 的权限

show grants for 'xxhh'@'hostlocal';

在这里插入图片描述
此时我们发现 xxhh用户 拥有 查找 study中所有表的权限
此时使用 xxhh来打开MySQL服务器

show databases;
use study;
select * from account;

在这里插入图片描述
我们发现,select的权利,xxhh 用户是有的,那么 insert 等权限,xxhh用户可以使用吗

insert into account value (null,'Jerry',20000);

在这里插入图片描述
发现不可以,说明没有这个权限。

  • 为bit@localhos用户授权于study数据库的所有权限
grant all on study.* to 'xxhh'@'hostlocal';
show grants for 'xxhh'@'localhost';

在这里插入图片描述

在这里插入图片描述
此时转换到 xxhh用户中,向 account 中插入数据,看看情况

select * from account;
insert into account value (null,'Jerry',5000);
select * from account;
update account set balance = balance - 1000 where name = 'Jerry';
select * from account;
delete from account where name ='Jerry';
select * from account;

在这里插入图片描述
不成功说明权限没有生效,需要刷新权限,如果还不成功可以重新登录

flush privileges;

3.2.回收权限

3.2.1.语法

REVOKE [IF EXISTS] priv_type[, priv_type] ... ON priv_level
FROM 'user_name'@'host_name' [, 'user_name'@'host_name']

3.2.2.示例

回收xxhh@localhost用户对于 study 数据库的权限

revoke all on *.* from 'xxhh'@'localhost';
show grants for 'xxhh'@'localhost';

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang Agent 可观测性的全面升级与新特性介绍

作者:张海彬(古琦) 背景 自 2024 年 6 月 26 日,ARMS 发布了针对 Golang 应用的可观测性监控功能以来,阿里云 ARMS 团队与程序语言与编译器团队一直致力于不断优化和提升该系统的各项功能,旨在为开发者提…

基于SpringBoot的中药材进存销管理系统设计与实现

摘要 中药材进存销管理系统是为了满足中药材生产和销售企业的高效管理需求,涵盖了药材采购、库存管理和销售跟踪等主要功能。本系统采用Spring Boot框架进行开发,结合了前端和数据库设计,构建了一个实用的中药材管理平台,为企业提…

游戏服务器被攻击有办法防护吗

游戏服务器受到攻击时比较常见的。就算是刚上线的游戏,都会有被攻击的时候。游戏服务器受到攻击的原因以及解决方案有哪些呢? 游戏服务器被攻击的原因有哪些呢? 1、常见的攻击,大部分来自于同行之间的恶意竞争,你的游…

【QT】Qt窗口(上)

个人主页~ Qt窗口 一、菜单栏二、工具栏三、状态栏四、浮动窗口 Qt窗口是通过QMainWindow类来实现的,我们之前的学习是通过QWidget类实现的 QMainWindow包含一个菜单栏Menu Bar②,多个工具栏Tool Bars③,多个浮动窗口Dock Widgets&#xff0c…

OpenRTP 传输增加OpenRTPServer

开源地址 最近增加了OpenRTPServer, 已经修改完成一版放在了目录下,window和linux下编译都成功了,不过由于修改代码CMakefile 需要修改,先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后,vlc 依然能…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode(独立服务器模式) 2、two server mode(双服务器模式) 3、distributed multiple-executor mode(分布式多…

【Rust】环境搭建

▒ 目录 ▒ 🛫 导读需求 1️⃣ 安装Chocolatey安装依赖 2️⃣ 安装RustRover安装toolchain(rustup、VS)重启配置生效设置安装插件 📖 参考资料 🛫 导读 需求 重装系统,记录下环境搭建遇到的问题。 1️⃣ …

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…

如何制定有效的学习计划

文章目录 第一章:目标设定1.1 目标的重要性1.2 SMART原则1.3 目标设定公式 第二章:时间管理2.1 时间的重要性2.2 制定时间表2.3 时间管理公式2.4 番茄工作法2.5 时间分配公式 第三章:学习策略3.1 学习方法3.2 学习材料的选择3.3 学习效果公式…

量子计算突破:下一个科技革命的风口浪尖在哪里?

内容概要 在当今科技飞速发展的时代,量子计算如同一颗璀璨的明珠,正闪烁着无尽的可能性。它不仅是解决科学难题的钥匙,更是即将引领科技革命的先锋。如今,随着技术的不断突破,量子计算已经步入了一个崭新的阶段。想象…

【ZZULI】数据库第二次实验

【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列,列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束,…

iOS静态库(.a)及资源文件的生成与使用详解(OC版本)

引言 iOS静态库(.a)及资源文件的生成与使用详解(Swift版本)_xcode 合并 .a文件-CSDN博客 在前面的博客中我们已经介绍了关于iOS静态库的生成步骤以及关于资源文件的处理,在本篇博客中我们将会以Objective-C为基础语言…

实验:使用Oxygen发布大型手册到Word格式

此前,我曾发表过一篇文章《结构化文档发布的故事和性能调优》,文中讨论了在将大型DITA手册转换为PDF格式时可能遇到的性能挑战及相应的优化策略。 近日,有朋友咨询,若将同样的大型手册输出为MS Word格式,是否也会面临…

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书,今天分享下如何用Rust做电子书。制作电子书其实用途广泛,不仅可以用于技术文档(对技术人来说非常方便),也可以制作用户手册、笔记、教程等,还可以应用于文学创作。 如果…

Python应用指南:利用高德地图API实现路径规划

高德路径规划API是一套基于HTTP协议的接口服务,旨在为开发者提供便捷的路径规划解决方案。该API支持多种出行方式,包括步行、公交和驾车,能够满足不同场景下的路径查询需求。通过调用这些API,用户可以获得从起点到终点的最优路径建…

【Web.路由】——路由原理

这篇文章,我们来讲一讲什么是路由。 路由是 将用户请求地址映射为一个请求委托的过程,负责匹配传入的Http请求,然后将这些请求发送到应用的可执行终结点。 这里需要注意一个内容,发送到应用的可执行终结点。 路由的分类&#x…

大模型落地,要追求极致的务实主义

图源:AI生成 ▎****更快用上最新的大模型,是不是就赢定了? “能够像人类一样操作电脑。”这一堪称革命性的新技能来自10月23日Anthropic最新推出的升级版Claude 3.5 Sonnet模型,据介绍该模型不仅各项性能指标上取得显著提升&…

MobileNetV2实现实时口罩检测tensorflow

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【Informer模型复现项目实战】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【…

机器学习 - 概述、数据集、Scikit-learn

目录 一、人工智能概述1、概念2、应用领域 二、机器学习1、概念2、数据集的构成3、算法分类a、监督学习b、无监督学习 4、开发流程5、可用数据集总结 三、Scikit-learn1、介绍2、安装3、数据集API介绍4、数据集返回值介绍5、数据集的划分6、数据集划分的API介绍7、案例a、获取鸢…

sass软件数据架构思路——未来之窗行业应用跨平台架构

一、SAAS多商户数据库 1.1 SaaS 多商户数据库的全部商户数据放在一个服务器上 1. 成本效益:集中管理和维护一个服务器通常比维护多个独立服务器更经济,降低硬件、运维和管理成本。 2. 数据集中管理:便于进行统一的数据备份、恢复和数据治理…