MySQL 基础知识(八)之用户权限管理

目录

1 MySQL 权限管理概念

2 用户管理

2.1 创建用户

2.2 查看当前登录用户

2.3 修改用户名

2.4 删除用户

3 授予权限

3.1 授予用户管理员权限

3.2 授予用户数据库权限

3.3 授予用户表权限

3.4 授予用户列权限

4 查询权限

5 回收权限


1 MySQL 权限管理概念

        关于 MySQL 的权限简单的理解就是 MySQL 允许你做你权利以内的事情,不可以越界。比如只允许你执行 select 操作,那么你就不能执行 update 操作。存储账户权限信息的表主要有四个:user 表、db 表、tables_priv  表、columns_priv 表。

用户权限信息表:

  • user 表:user 表存储了允许连接到服务器的用户信息,并且它指定这些用户有哪种全局(超级用户、管理员)权限。在 user 表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了 DELETE 权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。
  • db 表:db 表存储了用户对某个数据库的操作权限,在这里指定的权限适用于一个数据库中的所有表。
  • tables_priv 表:tables_priv 表存储了用户对某个表的操作权限,在这里指定的一个权限适用于一个表的所有列。
  • columns_priv 表:columns_priv 表存储了用户对表中某列的操作权限,在这里指定的权限适用于一个表的特定列。

MySQL 用户权限管理主要有以下作用:

  • 可以限制用户访问哪些库、哪些表
  • 可以限制用户对哪些表执行 SELECT、CREATE、DELETE、DELETE、ALTER 等操作
  • 可以限制用户登录的 IP 或域名
  • 可以限制用户自己的权限是否可以授权给别的用户

MySQL 权限信息表的验证过程分为两个阶段:连接权限验证和执行权限验证

  • 先从 user 表中的 Host、User、Password (MySQL 8.0 版本没有 Password,有 authentication_string)这 3 个字段中判断连接的 IP、用户名、密码是否存在,存在则通过验证

  • 通过连接权限验证后,进行权限分配,按照 user、db、tables_priv、columns_priv 的顺序进行验证

    • 校验 user 表,对于全局权限是 ok → 直接执行
    • 检验 db 表,对于某个特定的数据库有权限 → 执行
    • 检验 tables_priv 表,对于特定数据库下的某些表是有权限 → 执行
    • 检验 columns_priv 表,对于特定表中的某些列有权限 → 执行 

 MySQL 的权限分布,权限分布就是针对表可以设置什么权限,针对列可以设置什么权限等等

权限分布

可能的设置的权限

表权限

'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'

列权限

'Select', 'Insert', 'Update', 'References'

过程权限

'Execute', 'Alter Routine', 'Grant'

2 用户管理

2.1 创建用户

创建用户的格式

create user [用户名]@[访问地址] identified by [密码]

       访问地址(登录主机名)表示可以在哪些网络地址上登录账户连接(访问)数据库,可以为 'localhost'、'%' 或 '196.68.%' 这个网络下的地址等

  • 'localhost' 表示本机,IPv4 中 localhost 的地址为 '127.0.0.1'
  • '%' 通配符表示任何主机都可以连接

        设置相同的用户名,不同的访问地址(主机名),这样我们可以在不同的主机(网络地址)上登录账户连接数据。根据本文 1 MySQL 权限管理概念中的连接权限验证,只有当访问地址、用名名、密码验证通过后才能登录账户连接数据库。

# 创建本地登录的用户 test1,密码为 123456
create user 'test1'@'localhost' identified by '123456';# 创建任何主机都可以连接的用户 test2,密码为 123456
create user 'test2'@'%' identified by '123456';# 创建访问地址为'127.0.0.2' 的用户 test3,密码为 123456
create user 'test3'@'127.0.0.2' identified by '123456';# 查看账号、访问地址、密码
select user, host, authentication_string from mysql.user;

在本地登录 test3 ,结果是:拒绝连接,因为没有 'test'@'localhost'

2.2 查看当前登录用户
# 查看当前登录的用户
select user();select current_user();

2.3 修改用户名

rename 除了用来更改用户名外,还可以更改访问地址

# 更改用户名和访问地址
rename user 'test1'@'localhost' to 'test'@'%';#查看用户名和访问地址
select user, host from mysql.user;

2.4 删除用户
# 删除用名为 test2、访问地址为 '%' 的用户
drop user 'test2'@'%';

3 授予权限

授权格式

grant [权限1,权限2,权限3] on [数据库].[表名] to [用户名]@[访问地址]
3.1 授予用户管理员权限
# 授予 'test1'@'localhost' 管理员权限
grant all privileges on *.* to 'test1'@'localhost' with grant option;

  • all privileges:表示将所有权限授予给用户。也可指定具体的权限,如SELECT、CREATE、DROP 等。
  • on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写 “*” 表示当前数据库的所有表,“*.*” 表示所有数据库的所有表。如果要指定将权限应用到 test1 库的 user 表中,可以这么写:test1.user
  • to:将权限授予哪个用户
  • with grant option:允许被授权的用户把得到的权限继续授给其它用户
3.2 授予用户数据库权限
数据库权限说明
select表示授予用户可以使用 select 语句访问特定数据库中所有表和视图的权限
insert表示授予用户可以使用 insert 语句向特定数据库中所有表添加数据行的权限
delete表示授予用户可以使用 delete 语句删除特定数据库中所有表的数据行的权限
update表示授予用户可以使用 update 语句更新特定数据库中所有数据表的值的权限
references表示授予用户可以创建指向特定的数据库中的表外键的权限
create表示授权用户可以使用 create table 语句在特定数据库中创建新表的权限
alter表示授予用户可以使用 alter table 语句修改特定数据库中所有数据表的权限
show view表示授予用户可以查看特定数据库中已有视图的视图定义的权限
create routine表示授予用户可以为特定的数据库创建存储过程和存储函数的权限
alter routine表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限
execute routine表示授予用户可以调用特定数据库的存储过程和存储函数的权限
index表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限
drop表示授予用户可以删除特定数据库中所有表和视图的权限
create temporary tables表示授予用户可以在特定数据库中创建临时表的权限
create view表示授予用户可以在特定数据库中创建新的视图的权限
lock tables表示授予用户可以锁定特定数据库的已有数据表的权限
all 或 all privileges表示以上所有权限
# 创建用户 test
create user 'test'@'localhost' identified by '123456';# 授予用户 test 在 study 数据库中查询、创建、修改、删除表的权限以及创建视图的权限
grant select, create, alter, drop, create view on study.* to 'test'@'localhost';# 查询用户 test 权限
show grants for 'test'@'localhost';

3.3 授予用户表权限​​​​​​​
# 创建用户 learn1
create user 'learn1'@'localhost' identified by '123456';# 授予用户 learn1 查询、创建、修改 study 数据库的 goods 表的权限
grant select, create, alter on study.goods to 'learn1'@'localhost';# 查询用户 learn1 权限
show grants for 'learn1'@'localhost';

3.4 授予用户列权限
列权限说明
select(字段)表示授予用户可以使用 select 语句访问特定列的权限
insert(字段)表示授予用户可以使用 insert 语句向一个特定列插入数据的权限
update(字段)表示授予用户可以使用 update 语句更新特定列的权限
# 创建用户 learn2
create user 'learn2'@'localhost' identified by '123456';# 授予用户 learn2 查询、插入、更新 study 数据库的 goods 表的 name 列的权限
grant select(name), insert(name), update(name) on study.goods to 'learn2'@'localhost';# 查询用户 learn2 权限
show grants for 'learn2'@'localhost';

4 查询权限

使用 show grants; 查询 root 的权限时会出错

# 查询当前用户权限
# show grants();# 查询特定用户权限,如 learn2
show grants for 'learn2'@'localhost';

5 回收权限

回收权限格式

revoke [权限1,权限2,权限3] on [数据库].[表名] from [用户名]@[访问地址]

注意回收权限是回收已经授予用户的权限,不能回收用户没有的权限

# 回收用户 learn2 插入、更新 study 数据库的 goods 表的 name 列的权限
revoke insert(name), update(name) on study.goods from 'learn2'@'localhost';# 查询你 用户 learn2 的权限
show grants for 'learn2'@'localhost';

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

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

相关文章

用tensorflow模仿BP神经网络执行过程

文章目录 用矩阵运算仿真BP神经网络y relu ( (X․W ) b )y sigmoid ( (X․W ) b ) 以随机数产生Weight(W)与bais(b)placeholder 建立layer函数改进layer函数,使其能返回w和b github地址https://github.com/fz861062923/TensorFlow 用矩阵运算仿真BP神经网络 impo…

电源管理芯片是指在电子设备系统中,负责对电能的变换、分配、检测等进行管理的芯片

萨科微半导体宋仕强介绍说,电源管理芯片是指在电子设备系统中,负责对电能的变换、分配、检测等进行管理的芯片,其性能和可靠性直接影响电子设备的工作效率和使用寿命,是电子设备中的关键器件。萨科微slkor(www.slkormi…

人工智能专题:基础设施行业智能化的基础设施,自智网络双价值分析

今天分享的是人工智能系列深度研究报告:《人工智能专题:基础设施行业智能化的基础设施,自智网络双价值分析》。 (报告出品方:埃森哲) 报告共计:32页 自智网络驱动的电信产业变革 经过多年的…

电商小程序08调用缓存

目录 1 将信息存入缓存中2 获取登录信息3 退出登录4 发布预览总结 小程序的登录功能里,如果只是将登录信息保存到全局变量中,存在的问题是如果小程序重新打开,用户的登录状态就丢失了。为了解决这个问题,我们需要用到微搭的缓存的…

云计算基础-快照与克隆

快照及克隆 什么是快照 快照是数据存储的某一时刻的状态记录,也就是把虚拟机当前的状态保存下来(快照不是备份,快照保存的是状态,备份保存的是副本) 快照优点 速度快,占用空间小 快照工作原理 在了解快照原理前,…

文生图提示词:天气条件

天气和气候 --天气条件 Weather Conditions 涵盖了从基本的天气类型到复杂的气象现象,为描述不同的天气和气候条件提供了丰富的词汇。 Sunny 晴朗 Cloudy 多云 Overcast 阴天 Partly Cloudy 局部多云 Clear 清晰 Foggy 雾 Misty 薄雾 Hazy 朦胧 Rainy 下雨 Showers …

【C++】实现Date类的各种运算符重载

上一篇文章只实现了operator操作符重载&#xff0c;由于运算符较多&#xff0c;该篇文章单独实现剩余所有的运算符重载。继续以Date类为例&#xff0c;实现运算符重载&#xff1a; 1.Date.h #pragma once#include <iostream> #include <assert.h>using namespace …

Leecode之面试题消失的数字

一.题目及剖析 https://leetcode.cn/problems/missing-number-lcci/description/ 方法有很多,这里将两种时间复杂度为O(N)的方法 二.思路引入 第一种方法 先将0-n的总和求出来,在求出数组的总和,在做差就能得到消失的数字,不过要注意的是数据有可能溢出,这个方法很简单就不再…

【MySQL】Java的JDBC编程

数据库编程 1. 数据库编程的必备条件2. Java的数据库编程&#xff1a;JDBC3. JDBC工作原理4. JDBC使用4.1 JDBC开发案例4.2 JDBC使用步骤总结 5. JDBC常用接口和类5.1 JDBC API5.2 数据库连接Connection5.3 Statement对象5.4 ResultSet对象 面试问答&#xff1a; 1. 数据库编程…

腾讯云幻兽帕鲁服务器配置怎么选择合适?

腾讯云幻兽帕鲁服务器配置怎么选&#xff1f;根据玩家数量选择CPU内存配置&#xff0c;4到8人选择4核16G、10到20人玩家选择8核32G、2到4人选择4核8G、32人选择16核64G配置&#xff0c;腾讯云百科txybk.com来详细说下腾讯云幻兽帕鲁专用服务器CPU内存带宽配置选择方法&#xff…

如何在CSS中实现背景图片的渐变?

--引言 在CSS中&#xff0c;实现背景图片的渐变通常需要使用linear-gradient或者radial-gradient函数&#xff0c;这些函数可以与背景图像一起使用来创建渐变效果。然而&#xff0c;CSS的渐变并不直接支持使用图像作为渐变的颜色停止点。但你可以通过一些技巧来实现类似的效果…

MySQL篇----第十九篇

系列文章目录 文章目录 系列文章目录前言一、什么是存储过程?用什么来调用?二、如何通俗地理解三个范式?三、什么是基本表?什么是视图?四、试述视图的优点?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

Linux项目自动化构建工具-make/Makefile

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 背景 理解 实例代码 依赖关系 依赖方法 原理 项目清理 总结 前言 世上有两种耀眼的光芒&#xff0c;一种是正在升起的太阳&#xff0c;一种是正在努力学习编程…

Ansible fetch 模块 该模块用于从远程某主机获取(复制)文件到本地

这里写目录标题 参数实例查看返回结果在这里插入图片描述 参数 dest&#xff1a;用来存放文件的目录 src&#xff1a;在远程拉取的文件&#xff0c;并且必须是一个file&#xff0c;不能是**目录* 实例 ansible slave -m fetch -a src/data/hello.txt dest/data/可以看到一个…

Chat with RTX 安装

1、Chat With RTX 介绍 Chat With RTX 是一个 Demo&#xff0c;用来将您自己的资料&#xff08;文档、笔记、视频或其他数据&#xff09;与大语言模型建立连接&#xff0c;从而令 LLM 更具个性化。利用检索增强生成 (RAG)、TensorRT-LLM 和 RTX 加速&#xff0c;您可以与自定义…

ChatGPT绘图指南:DALL.E3玩法大全(一)

一、 DALLE.3 模型介绍 1、什么是 DALLE.3 模型&#xff1f; DALLE-3模型&#xff0c;是一种由OpenAI研发的技术&#xff0c;它是一种先进的生成模型&#xff0c;可以将文字描述转化为清晰的图片。这种模型的名称"DALLE"实际上是"Deep Auto-regressive Latent …

让每次生成的随机数都相同np.random.seed()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 让每次生成的随机数都相同 np.random.seed() 选择题 关于以下代码输出的结果说法正确的是&#xff1f; import numpy as np np.random.seed(0) print(【执行】print(np.random.rand(3))) prin…

EXTI外部中断

&#xff1f; 难点&#xff1a;中断向量表、看门狗、NVIC的优先级位&#xff1f;EXTI框图&#xff1f; ------------------------ 中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;--->例如&#xff1a;…

C++初阶(十二) stack和queue

一、stack的介绍和使用 1.1 stack的介绍 stack的文档介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作…

python_django高校运动会成绩管理系统4o4c3

田径运动会报名管理系统就是给学生进行网上报名&#xff0c;管理员管理报名信息的一种通用管理平台&#xff0c;从而方便管理人员对运动会的日常报名工作的管理。本系统的前台功能模块包括系统的基本操作、最新公告、运动项目和报名项目&#xff1b;系统的后台功能模块包括系统…