当前位置: 首页 > news >正文

MySQL中的用户管理

系列文章目录

MySQL常见的几种约束

MySQL中的函数

MySQL中的事务

MySQL中的视图

MySQL中的索引


文章目录

  • 系列文章目录
  • 前言
  • 一、用户管理
    • 1、用户管理入门
    • 2、用户管理操作及示例
  • 二、权限管理
    • 1.权限管理语法
    • 2.权限操作示例
  • 三、角色管理
    • 1、角色管理入门
    • 2、角色操作示例
  • 总结


在这里插入图片描述

前言

MySQL中可创建不同的用户,并分配不同的权限,保证MySQL中数据的安全性。MySQL8中提供了角色,是权限的集合,可以直接赋予用户以角色。用户管理主要包括用户管理、权限管理、安全管理内容。


一、用户管理

1、用户管理入门

MySQL用户主要包括两种:root用户和普通用户。root用户为超级管理员,拥有MySQL提供的所有权限,而普通用户的权限取决于该用户在创建时被赋予的权限有哪些。实际开发中很少直接使用root用户,权限过大,操作不当会具有很大的危险性。

MySQL中有一个自带数据库mysql,其中有多个和用户权限有关的数据库表。

  • user表中存储了允许连接到服务器的用户信息以及全局级(适用于所有数据库)的权限信息。这是最关键的表;
  • db表中存储了某个用户对相关数据库的权限(数据库级权限)信息;
  • 表级权限表tables_priv,可以实现单张表的权限设置;
  • 列级权限表columns_priv,可以实现单个字段的权限设计;

MySQL用户通过身份认证后,会进行权限的分配,分配权限是按照user表、db表、tables_priv表、columns_priv表的顺序依次进行验证。即先检查全局级权限表user,如果user表中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db表、tables_priv表、columns_priv表;如果user表中对应的权限为N,则到数据库级权限表db中检查此用户对应的具体数据库的权限,如果得到db表中对应的权限为Y,将不再检查tables_priv表、columns_priv;如果db表中对应的权限为N,则检查表级权限表tables_priv中此数据库对应的具体表的权限,以此类推。

2、用户管理操作及示例

主要操作包括创建用户、修改用户、删除用户、查询用户。每个新建的用户都会在user表中有对应的记录。

其中创建用户的语法为:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%;还可以指定的ip地址范围
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

在MySQL5.7之前,user表中还有一个名为password的字段用于存储用户的密码,但是在MySQL5.7之后,密码存储authentication_string字段中。

用户操作示例:

-- 查询用户列表  
use mysql  
select * from user  
-- 所有的用户信息保存在mysql数据库的user数据库表中  -- 创建用户  
create user 'zhangsan' identified by 'zhangsan'  
create user 'lisi'@'localhost' identified by 'lisi'  
create user lisi@localhost identified by 'lisi'   
-- %:代表可以在所有主机(包括当前主机)登录数据库  
-- localhost  表示只可以在本地登录(客户端和服务器在同一台电脑上)
-- 也可以指定具体的ip或者ip范围-- 修改用户  
-- 无法使用navicat连接数据库,需要修改密码验证插件  
alter user'zhangsan'@'%' identified with mysql_native_password by 'zhangsan'
-- 修改用户密码  
-- 方法1 alter user  
alter user 'zhangsan'@'%' identified  by 'zhangsan2'  
-- 方法2:set password  
set password for 'zhangsan'@'%'  = 'zhangsan3'  -- 删除用户  
drop user 'lisi'@'localhost'  

二、权限管理

1.权限管理语法

MySQL通过权限管理机制可以给不同的用户授予不同的权限,从而确保数据库中数据的安全性。权限管理机制包括查看权限、授予权限以及收回权限。

其中授予权限的语法为:

grant privileges ON dbname.tablename TO 'username'@'host'
  • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL。新创建的用户默认权限为USAGE,除了可以登录数据库外,没有任何权限
  • databasename:数据库名
  • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示

2.权限操作示例

-- 查询权限  
-- 查询当前用户权限  
show grants   
-- 查询指定用户的权限  
show grants for 'zhangsan'@'%'  --  特殊权限  
-- USAGE  :只有登录权限  
-- ALL :所有权限  -- 授予权限和撤销权限1  
grant  all  on mydb.*  to  'zhangsan'@'%'  
revoke all  privileges  on mydb.*  from  'zhangsan'@'%'  -- 授予权限和撤销权限2  
grant  select,delete,update,insert on mydb.dept  to 'zhangsan'@'%'  
revoke delete on mydb.dept  from 'zhangsan'@'%'  -- 刷新权限  
flush  privileges;

三、角色管理

1、角色管理入门

MySQL 数据库中通常都会出现多个拥有相同权限集合的用户,在之前版本中只有分别向多个用户授予和撤销权限才能实现单独更改每个用户的权限。在用户数量比较多的时候,这样的操作是非常耗时的。

MySQL 8.0 为了用户权限管理更容易,提供了一个角色管理的新功能。角色是指定的权限集合,和用户帐户一样可以对角色进行权限的授予和撤消。如果用户被授予角色权限,则该用户拥有该角色的权限。

MySQL 8.0 提供的角色管理功能如下:

  • CREATE ROLE 角色创建
  • DROP ROLE 角色删除
  • GRANT 为用户和角色分配权限
  • REVOKE 为用户和角色撤销权限
  • SHOW GRANTS 显示用户和角色的权限
  • SET DEFAULT ROLE 指定哪些帐户角色默认处于活动状态
  • SET ROLE 更改当前会话中的活动角色
  • CURRENT_ROLE() 显示当前会话中的活动角色

2、角色操作示例

-- 创建角色  
create role 'dev_read','dev_write'  -- 给角色分配权限  
grant select on mydb.* to 'dev_read';  
grant update,insert,delete on mydb.* to 'dev_write';  -- 创建用户  
create user 'user1'@'localhost' identified by 'user1';  
create user 'user2'@'localhost' identified by 'user2';  
create user 'user3'@'localhost' identified by 'user3';  -- 给用户分配角色  
grant dev_read to 'user1'@'localhost'  
grant dev_read to 'user2'@'localhost'  
grant dev_write to 'user3'@'localhost'  -- 激活角色,设置用户帐户连接到数据库服务器时指定哪些角色应该处于活动状态
set default role all to 'user1'@'localhost','user2'@'localhost'  ,'user3'@'localhost'    -- 给用户撤销角色  
revoke select on mydb.* from 'dev_read';  
revoke update,insert,delete on mydb.* from 'dev_write'  -- 删除角色  
drop role 'dev_read';  
drop role 'dev_write'  -- 删除用户  
drop user  'user1'@'localhost','user2'@'localhost'  ,'user3'@'localhost'  

总结

MySQL中的用户管理是非常重要的一步,它可以帮助我们控制和管理数据库的访问权限,保证数据的安全性和完整性。在实际应用中,我们需要根据实际情况来设置用户的访问权限,并定期检查和更新用户的权限信息。

相关文章:

MySQL中的用户管理

系列文章目录 MySQL常见的几种约束 MySQL中的函数 MySQL中的事务 MySQL中的视图 MySQL中的索引 文章目录 系列文章目录前言一、用户管理1、用户管理入门2、用户管理操作及示例 二、权限管理1.权限管理语法2.权限操作示例 三、角色管理1、角色管理入门2、角色操作示例 总结…...

【STM32】利用CubeMX对FreeRTOS用按键控制任务

对于FreeRTOS中的操作,最常用的就是创建、删除、暂停和恢复任务。 此次实验目标: 1.创建任务一:LED1每间隔1秒闪烁一次,并通过串口打印 2.创建任务二:LED2每间隔0.5秒闪烁一次,并通过串口打印 3.创建任…...

c# .net mvc的IHttpHandler奇妙之旅--图片文件请求安全过滤,图片防盗链

源码下载: c# .net mvc图片文件请求安全过滤,图片防盗链 https://download.csdn.net/download/cplvfx/88206428 在阅读该文章前,请先阅读该文章 c# .net mvc的IHttpHandler奇妙之旅。.net的生命周期和管道你听说过吗?你可以利用他处理业务如:跳转业务页面,文件请求的安全…...

STM32F407使用Helix库软解MP3并通过DAC输出,最精简的STM32+SD卡实现MP3播放器

只用STM32单片机SD卡耳机插座,实现播放MP3播放器! 看过很多STM32软解MP3的方案,即不通过类似VS1053之类的解码器芯片,直接用STM32和软件库解码MP3文件,通常使用了labmad或者Helix解码库实现,Helix相对labm…...

STM32 CAN 过滤器设置

做个笔记吧 ,免得以后忘记了 芯片是stm32F207 ,用cubeMX 6.80 版本生成 CAN 的使用总体包含4个部分 第一步:CAN初始化,配置波特率 (cubeMX 里面配置好后自动生成,不需要手动添加) MX_CAN1_Init(); 第二步&#…...

日常BUG—— maven编译报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 一个maven项目在由于在代码中书写了如下代码&#xff1a; public static ConcurrentMap<…...

Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理

Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理 目录 Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理 一、简单介绍 二、实现原理 三、实现步骤 四、关键代码 一、简单介绍 Unity 工具类&#xff0c;自己整理的一些游戏开发可…...

学习Vue:插值表达式和指令

在 Vue.js 中&#xff0c;Vue 实例与数据绑定是构建动态交互界面的关键。在这篇文章中&#xff0c;我们将重点介绍 Vue 实例中两种实现数据绑定的方式&#xff1a;插值表达式和指令。这些机制允许您将数据无缝地渲染到界面上&#xff0c;实现实时的数据更新和展示。 插值表达式…...

echart 3d立体颜色渐变柱状图

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 1.需求描述 根据业务需求将不同的法律法规&#xff0c;展示不同的3d立体渐变柱状图。 2.先看下效果图 3. 确定三面的颜色&#xff0c;这里我是自定义的颜色 // 右面生成颜色const rightColorArr ref(["#79D…...

linux shell变量

linux shell变量 1、变量命名规则2、只读变量3、删除变量 1、变量命名规则 变量名不能加$命名只能使用英文字母、数字和下划线&#xff0c;首个字母不能以数字开头中间不能有空格。可以有下划线不能使用标点符号不能使用bash中的关键字 username"tom"引用 $userna…...

Linux 发行版 Debian 12.1 发布

在今年 6 月初&#xff0c;Debian 12“bookworm”发布&#xff0c;而日前 Debian 迎来了 12.1 版本&#xff0c;主要修复系统用户创建等多个安全问题。 Debian 是最古老的 GNU / Linux 发行版之一&#xff0c;也是许多其他基于 Linux 的操作系统的基础&#xff0c;包括 Ubuntu…...

【Rust】Rust学习 第七章使用包、Crate和模块管理不断增长的项目

目前为止&#xff0c;我们编写的程序都在一个文件的一个模块中。伴随着项目的增长&#xff0c;你可以通过将代码分解为多个模块和多个文件来组织代码。一个包可以包含多个二进制 crate 项和一个可选的 crate 库。伴随着包的增长&#xff0c;你可以将包中的部分代码提取出来&…...

网站SSL安全证书是什么及其重要性

网站SSL安全证书具体来说是一个数字文件&#xff0c;是由受信任的数字证书颁发机构&#xff08;CA机构&#xff09;进行审核颁发的&#xff0c;其中包含CA发布的信息&#xff0c;该信息表明该网站已使用加密连接进行了安全保护。 网站SSL安全证书也被称为SSL证书、https证书和…...

Android Alarm闹钟API使用心得

前言 有什么办法可以在不打开App的时候&#xff0c;也能够触发一些操作呢&#xff1f;比如说发送通知&#xff0c;解决这个需求的办法有很多种选择&#xff0c;比如说官方推荐的WorkManager API&#xff0c;可以在后台执行一次性、耗时、定时的任务&#xff0c;但WorkManager是…...

什么是业务敏捷,如何实现业务敏捷?

点击链接了解详情 作者介绍 前言 随着越来越多行业的企业开始关注敏捷&#xff0c;业务敏捷&#xff08;Business Agility&#xff09;成为一个新的热点。毕竟大部分的行业和组织与软件无关&#xff0c;但是依然要实现业务上的敏捷&#xff0c;所以这个系列会主要谈两点&#…...

​ATF(TF-A)安全通告 TFV-7 (CVE-2018-3639)​

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-7 (CVE-2018-3639) 二、静态缓解&#xff08;Static mitigation&#xff09; 三、动态缓解&#xff08;Dynamic mitigation&#xff09; 一、ATF(TF-A)安全通告 TFV-7 (CVE-2018…...

第三天课程下

1.项目目录介绍和运行流程 工程化开发模式中&#xff1a;这里不再直接编写模板语法&#xff0c;通过 App.vue 提供结构渲染 main.js文件 // 文件核心作用&#xff1a;导入App.vue&#xff0c;基于App.vue创建结构渲染index.html // 1. 导入 Vue 核心包 import Vue from vue// …...

嵌入式编译FFmpeg6.0版本并且组合x264

下载直通车:我用的是6.0版本的 1.准备编译: 2.进入ffmpeg源码目录&#xff0c;修改Makefile&#xff0c;添加编译选项&#xff1a; CFLAGS -fPIC 不加会报错 3.使用命令直接编译 ./configure --cross-prefix/home/xxx/bin/arm-linux-gnueabihf- --enable-cross-compile --targ…...

原子css 和 组件化css如何搭配使用

如果让你来实现下面这种页面&#xff0c;该怎么实现呢 原子化和css组件化方式写法&#xff0c;可以搭配起来使用&#xff0c;常用的css 原子css 比如 下面这些类似flex 布局&#xff0c;lstn curser-pointer 等常用的或者 具备一定规律性的padding margin 样式可以抽取为单独…...

Python 实现Selenium录屏的一种方法(图片整合成动态图)

由于UI层自动化的不稳定性&#xff0c;经常会遇到执行中断或用例失败的问题&#xff0c;以下是一些常见的措施。 1.详细的日志 2.定位出错时截图 3.Pytest的缓存机制(可以记录成功了哪些失败了哪些) 4.自动重试机制(如pytest-rerunfailures) 5.用例录像 用例录像是最直观的一…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...