mysql 用户管理-权限表
学习了《mysql5.7安装》,就先再了解下用户管理,先了解下权限表。
MySQL是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许
的权限。MySQL用户可以分为普通用户和root用户。root 用户是超级管理员,拥有所有权限,
包括创建用户、删除用户和修改用户的密码等管理权限:普通用户只拥有被授予的各种权限。
用户管理包括管理用户账户、权限等。
1,权限表
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中,
由MySQL_istall db脚本初始化。存储账户权限信息表主要有: user、db、host、tables_priv、columnns_priv和procs_priv.
2,user 表
user表是MySQL中最重要的一个权限表, 记录允许连接到服务器的账号信息,里面的权限是全局级的。
例如:一个用户在user表中被授予了DELETE权限,则该用户可以删除MySQL服务器上所有数据库中的任何记录。MySQL 5.7中user表有42个字段,如表1所示,这些字段可以分为4类,分别是用户列、权限列、安全列和资源控制列。
表1 user 表结构
| 字段名 | 数据类型 | 默认值 |
| Host | char(60) | |
| User | char(16) | |
| Password | char(41) | |
| Select_priv | enum('N', 'Y') | N |
| Insert_priv | enum('N', 'Y') | N |
| Update_priv | enum('N', 'Y') | N |
| Delete_priv | enum('N', 'Y') | N |
| Create priv | enum("N','Y") | N |
| Drop_priv | enum('N', 'Y') | N |
| Reload_priv | enum('N','Y") | N |
| Shutdown_priv | enum('N', 'Y') | N |
| Process_priv | enum('N', 'Y') | N |
| File_priv | enum('N', 'Y') | N |
| Grant_priv | enum('N', 'Y') | N |
| References_priv | enum('N', 'Y') | N |
| Index_priv | enum('N', 'Y') | N |
| Alter_priv | enum('N', 'Y') | N |
| Show_db_priv | enum('N', 'Y') | N |
| Super_priv | enum('N', 'Y') | N |
| Create_tmp_table_priv | enum('N', 'Y') | N |
| Lock_tables priv | enum('N', 'Y') | N |
| Execute_priv | enum('N', 'Y') | N |
| Repl_slave_priv | enum('N', 'Y') | N |
| Repl_client_priv | enum('N', 'Y') | N |
| Create_view_priv | enum('N', 'Y') | N |
| Show_view_priv | enum('N', 'Y') | N |
| Create_routine_priv | enum('N', 'Y') | N |
| Alter_routine_priv | enum('N', 'Y') | N |
| Create_user_priv | enum('N', 'Y') | N |
| Event_priv | enum('N', 'Y') | N |
| Trigger_priv | enum('N', 'Y') | N |
| Create_tablespace priv | enum('N', 'Y') | N |
| ssl_type | enum('', 'ANY', 'X509', 'SPECIFIED') | |
| ssl_cipher | blob | NULL |
| x509_issuer | blob | NULL |
| x509_subject | blob | NULL |
| max_questions | int(11) unsigned | 0 |
| max_updates | int(11) unsigned | 0 |
| max_connections | int(11) unsigned | 0 |
| max_user_connections | char(64) | N |
| plugin | text | NULL |
1,用户列
user表的用户列包括Host、User、 Password, 分别表示主机名、用户名和密码。其中User
和Host为User表的联合主键。当用户与服务器之间建立连接时,输入的账户信息中的用户名称、主机名和密码必须匹配User表中对应的字段,只有3个值都匹配的时候,才允许连接建立。这3个字段的值就是创建账户时保存的账户信息。修改用户密码时,实际就是修改user表的Password字段的值。
2,权限列
权限列的字段决定了用户的权限,描述了在全局范围内允许对数据和数据库进行的操作。
包括查询权限、修改权限等普通权限,还包括了关闭服务器、超级权限和加载用户等高级权限。普通权限用于操作数据库;高级权限用于数据库管理。
user表中对应的权限是针对所有用户数据库的。这些字段值的类型为ENUM,可以取的值只能为Y和N, Y表示该用户有对应的权限: N表示用户没有对应的权限。查看user表的结构可以看到,这些字段的值默认都是N。如果要修改权限,可以使用GRANT语句或UPDATE语句更改user表的这些字段来修改用户对应的权限。
3,安全列
安全列只有6个字段,其中两个是ssl相关的,两个是x509相关的,另外两个是授权插件相关的。ssl 用于加密; x509 标准可用于标识用户: Plugin 字段标识可以用于验证用户身份的插件,如果该字段为空,服务器使用内建授权验证机制验证用户身份。可以通过
SHOW VARIABLES LIKE 'have_openssl';
语句来查询服务器是否支持ssl功能。
4,资源控制列
资源控制列的字段用来限制用户使用的资源,包含4个字段,分别为:
(1) max_questions -- 用户 每小时允许执行的查询操作次数。
(2) max_updates -- 用户每小时允许执行的更新操作次数。
(3) max_connections -- 用 户每小时允许执行的连接操作次数。
(4) max_user_connections -- 用户允许同时建立的连接次数。
一个小时内用户查询或者连接数量超过资源控制限制,用户将被锁定,直到下一个小时才
可以在此执行对应的操作。可以使用GRANT语句更新这些字段的值。
2,db表和host表
db表和host表是MySQL数据中非常重要的权限表。db表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。host 表中存储了某个主机对数据库的操作权限,配合db权限表对给定主机上数据库级操作权限做更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。db 表比较常用,host 表一般很少使用。 db表和host表结构相似,字段大致可以分为两类:用户列和权限列。db表和host表的结构分别如表2和表3所示。
表2 db 表结构
| 字段名 | 数据类型 | 默认值 |
| Host | char(60) | |
| User | char(16) | |
| Select_priv | enum('N', 'Y') | N |
| Insert_priv | enum('N', 'Y') | N |
| Update_priv | enum('N', 'Y') | N |
| Delete_priv | enum('N', 'Y') | N |
| Create priv | enum("N','Y") | N |
| Drop_priv | enum('N', 'Y') | N |
| Grant_priv | enum('N', 'Y') | N |
| References_priv | enum('N', 'Y') | N |
| Index_priv | enum('N', 'Y') | N |
| Alter_priv | enum('N', 'Y') | N |
| Create_tmp_table_priv | enum('N', 'Y') | N |
| Lock_tables priv | enum('N', 'Y') | N |
| Create_view_priv | enum('N', 'Y') | N |
| Show_view_priv | enum('N', 'Y') | N |
| Create_routine_priv | enum('N', 'Y') | N |
| Alter_routine_priv | enum('N', 'Y') | N |
| Execute_priv | enum('N', 'Y') | N |
| Event_priv | enum('N', 'Y') | N |
| Trigger_priv | enum('N', 'Y') | N |
表3 host 表结构
| 字段名 | 数据类型 | 默认值 |
| Host | char(60) | |
| Select_priv | enum('N', 'Y') | N |
| Insert_priv | enum('N', 'Y') | N |
| Update_priv | enum('N', 'Y') | N |
| Delete_priv | enum('N', 'Y') | N |
| Create priv | enum("N','Y") | N |
| Drop_priv | enum('N', 'Y') | N |
| Grant_priv | enum('N', 'Y') | N |
| References_priv | enum('N', 'Y') | N |
| Index_priv | enum('N', 'Y') | N |
| Alter_priv | enum('N', 'Y') | N |
| Create_tmp_table_priv | enum('N', 'Y') | N |
| Lock_tables priv | enum('N', 'Y') | N |
| Create_view_priv | enum('N', 'Y') | N |
| Show_view_priv | enum('N', 'Y') | N |
| Create_routine_priv | enum('N', 'Y') | N |
| Alter_routine_priv | enum('N', 'Y') | N |
| Execute_priv | enum('N', 'Y') | N |
| Trigger_priv | enum('N', 'Y') | N |
1,用户列
db表用户列有3个字段,分别是Host、User. Db,标识从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键。host 表不存储用户名称,用户列只有2个字段,分别是Host和Db,表示从某个主机连接的用户对某个数据库的操作权限,其主键包括Host和Db两个字段。host很少用到,一般情况 下db表就可以满足权限控制需求了。
2,权限列
db表和host表的权限列大致相同,表中create_routine_priv 和alter_routine_priv 这两个字段表明用户是否有创建和修改存储过程的权限。
user表中的权限是针对所有数据库的,如果希望用户只对某个数据库有操作权限,那么需要将user表中对应的权限设置为N,然后在db表中设置对应数据库的操作权限。
例如,有一个名称为Zhangting 的用户分别从名称为large domain.com和small.domain.com的两个主机连接到数据库,并需要操作books数据库。这时,可以将用户名称Zhangting添加到db表中,而db表中的host字段值为空,然后将两个主机地址分别作为两条记录的host字段值添加到host表中,并将两个表的数据库字段设置为相同的值books。当有用户连接到MySQL服务器时,db表中没有用户登录的主机名称,则MySQL会从host表中查找相匹配的值,并根据查询的结果决定用户的操作是否被允许。
3,tables_priv 表和columns_priv 表
tables_priv 表用来对表设置操作权限,columns_priv 表用来对表的某一列设置权限。
tables_priv表和columns_priv表的结构分别如表4和表5所示。
表4 tables_priv 表结构
| 字段名 | 数据类型 | 默认值 |
| Host | char(60) | |
| Db | char(64) | |
| User | char(16) | |
| Table_name | char(64) | |
| Grantor | char(77) | |
| Timestamp | timestamp | CURRENT_TIMESTAMP |
| Table_priv | set('Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter','Create View', 'Showview', 'Trigger') | |
| Column_priv | set('Select', 'Insert', 'Update', 'References') |
表5 columns_priv 表结构
| 字段名 | 数据类型 | 默认值 |
| Host | char(60) | |
| Db | char(64) | |
| User | char(16) | |
| Table_name | char(64) | |
| Column_name | char(64) | |
| Timestamp | timestamp | CURRENT_TIMESTAMP |
| Column_priv | set('Select', 'Insert', 'Update', 'References') |
tables_priv 表有8个字段,分别是Host、Db、 User、 Table_name、Grantor、 Timestamp、Table_priv和Column_priv,各个字段说明如下:
(1)Host、Db、User和Table_name4个字段分表示主机名、数据库名、用户名和表名。
(2)Grantor 表示修改该记录的用户。
(3)Timestamp 字段表示修改该记录的时间。
(4)Table_priv 表示对表的操作权限,包括Select、 Insert、 Update、 Delete、 Create. Drop、Grant、References、 Index 和Alter 等。
(5)Column_priv字段表示对表中的列的操作权限,包括Select、 Insert、 Update 和
References。
columns_priv 表只有7个字段,分别是Host、Db、 User、 Table_name、Column_name、Timestamp、Column_priv。其中,Column_name用来指定对哪些数据列具有操作权限。
4,procs_priv表
procs_priv表可以对存储过程和存储函数设置操作权限。procs_priv的表结构如表6所示。
表6 procs_priv 表结构
| 字段名 | 数据类型 | 默认值 |
| Host | char(60) | |
| Db | char(64) | |
| User | char(16) | |
| Routine_name | char(64) | |
| Routine_type | enum('FUNCTION', 'PROCEDURE') | |
| Grantor | char(77) | |
| Proc_priv | set('Execute', 'Alter Routine', 'Grant') | |
| Timestamp | timestamp | CURRENT_TIMESTAMP |
procs_priv 表包含8个字段分别是Host、Db、User、Routine_name、Routine_type. Grantor、Proc_priv和Timestamp,各个字段的说明如下:
(1)Host、 Db和User字段分别表示主机名、数据库名和用户名。Routine_name表示存
储过程或函数的名称。
(2)Routine_type表示存储过程或函数的类型。Routine_type字段有两个值,分别是
FUNCTION和PROCEDURE。FUNCTION表示这是一个函数; PROCEDURE 表示这是一个
存储过程。
(3)Grantor 是插入或修改该记录的用户。
(4)Proc_priv表示拥有的权限,包括Execute、Alter Routine、Grant3 种。
(5)Timestamp表示记录更新时间。
5,总结
权限表,进入mysql数据库,看表结构,用DESC,比如: desc user; 看用户表的表结构。用户表平时感觉会比其他的多一些,看有哪些用户;其次是权限表tables_priv。
上一篇:《mysql 命令行常用操作和客户端》
下一篇: 《mysql 用户管理-用户表》
相关文章:
mysql 用户管理-权限表
学习了《mysql5.7安装》,就先再了解下用户管理,先了解下权限表。 MySQL是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许 的权限。MySQL用户可以分为普通用户和root用户。root 用户是超级管理员,拥有所有权…...
【Postman如何进行接口测试简单详细操作实例】
1、下载Postman postman下载地址:Download Postman | Get Started for Free 2、安装Postman (1)双击下载好的postman-setup.exe文件,进行安装postman工具 (2)安装完成后,在桌面找到并打开postman软件,输入邮箱和密码进行登录&a…...
docker搭建Project Calico环境
Project Calico 是一个开源的网络和网络安全解决方案,专为容器、虚拟机和本地工作负载设计。它提供了高度可扩展的网络层,支持广泛的容器编排平台,如 Kubernetes、Docker Swarm和OpenStack。Calico 的主要特点包括: 支持多层网络策略,包括基于角色的访问控制(RBAC)。提供网…...
pyecharts操作一
pyecharts 是一个用于生成Echarts图表的Python库。Echarts是百度开源的一个数据可视化JS库,可以生成一些非常酷炫的图表。 环境安装 pip install pyecharts 检查版本 import pyecharts print(pyecharts.version) 2.0.3 柱状图绘制 from pyecharts.charts impor…...
『Apisix进阶篇』动态负载均衡:APISIX的实战演练与策略应用
🚀『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 📣读完这篇文章里你能收获到 🎯 掌握APISIX中多种负载均衡策略的原理及其适用场景。📈 学习如何通过APISIX的Admin API和Dashboard进行负…...
【开发篇】十一、GC调优的分析工具
文章目录 1、调优的主要指标2、工具一:jstat3、工具二:Visual VM的插件4、工具三:Prometheus Grafana5、生成GC日志6、工具四:GC Viewer7、工具五:GCeasy GC调优,是为了避免因垃圾回收引起程序性能下降&am…...
SpringCloudConfig 使用git搭建配置中心
一 SpringCloudConfig 配置搭建步骤 1.引入 依赖pom文件 引入 spring-cloud-config-server 是因为已经配置了注册中心 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</…...
c#基础-引用类型和值类型的区别
在C#中,数据类型分为两类:值类型和引用类型。 值类型:直接存储数据,分配在栈(Stack)上。常见的值类型包括基本数据类型(int, float, double等),结构体(struct),枚举(enum)等。 引用类型:存储数据的引用和对象,分配在托管堆(Heap)上。常见的引用类型包括类(cla…...
面试题-3.20
1、__FILE__表示什么意思? __FILE__:当前文件的完整路径和文件名 __LINE__:当前行 __DIR__:当前文件所在的目录 2、如何获取客户端的IP地址? 通过超全局数组$_SERVER:echo $_SERVER[REMOTE_PORT]; 3、写…...
glibc内存管理ptmalloc - 多线程内存管理
上图 此图着重描述的是子线程,一个heap(由heap_info结构体描述)用完,需要另一个的情况。 子线程内存特点 1. 第一个heap物理内存上从低地址到高地址依次是:heap_infomalloc_state(arena)chunks /* arena.c #0 new_…...
区块链食品溯源案例实现(一)
引言: 食品安全问题一直是社会关注的热点,而食品溯源作为解决食品安全问题的重要手段,其重要性不言而喻。传统的食品溯源系统往往存在数据易被篡改、信息不透明等问题,而区块链技术的引入,为食品溯源带来了革命性的变革…...
4S店车辆管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)
本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. 管…...
SpringBoot+Prometheus+Grafana实现应用监控和报警
一、背景 SpringBoot的应用监控方案比较多,SpringBootPrometheusGrafana是目前比较常用的方案之一。它们三者之间的关系大概如下图: 关系图 二、开发SpringBoot应用 首先,创建一个SpringBoot项目,pom文件如下: <…...
10 - Debian如何让特定用户切换root身份
作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何让特定用户切换root身份 《傅老师Debian小知识库系列之10》——原创 前言 傅老师Debian小知识库特点: 1、最小化拆解Debian实用技能…...
HPT发布HyperGAI 多模态大模型:性能领先GPT-4V,全面胜过Gemini Pro
前言 HyperGAI研究团队自豪地宣布推出HPT——新一代领先的多模态大型语言模型(Multimodal Large Language Model, Multimodal LLM)。作为人工通用智能(Artificial General Intelligence, AGI)构建的基石,HPT跨入多模态…...
汇春科技之MDT10F684
目录 第一、时钟 第二,定时器Timer0 第三,pwm 汇春官网:汇春科技 (yspringtech.com) 汇春是麦肯的原厂,以下是两个论坛,其中都有关于麦肯单片机的学习论坛,可以参考学习,第一个叫英锐恩&…...
【Vue3笔记01】如何使用Vue3和Vite搭建前端项目的基础开发环境
这篇文章,主要介绍如何使用Vue3和Vite搭建前端项目的基础开发环境【知识星球】。 目录 一、搭建项目环境 1.1、前提条件 1.2、开始搭建 1.3、下载依赖...
软考高级架构师:信息安全概念和例题
一、AI 讲解 信息安全是保障信息资产免受各种威胁的一系列措施和活动的总称,其目的是保护信息的机密性、完整性、可用性、可控性和可审查性,确保信息系统的正常运行。信息安全的范围涵盖了设备安全、数据安全、内容安全和行为安全。网络安全漏洞和网络安…...
Lilishop商城(windows)本地部署【docker版】
Lilishop商城(windows)本地部署【docker版】 部署官方文档:LILISHOP-开发者中心 https://gitee.com/beijing_hongye_huicheng/lilishop 本地安装docker https://docs.pickmall.cn/deploy/win/deploy.html 命令端页面 启动后docker界面 注…...
# 14 React 自定义Hook详解
自定义 Hook 是一个函数,其名称以 “use” 开头,函数内部可以调用其他 Hook。自定义 Hook 是一个函数,其名称以 “use” 开头,函数内部可以调用其他 Hook。下面是几个自定义 Hook 的例子以及需要注意的知识: 1. 使用状…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
