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

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__表示什么意思&#xff1f; __FILE__&#xff1a;当前文件的完整路径和文件名 __LINE__&#xff1a;当前行 __DIR__&#xff1a;当前文件所在的目录 2、如何获取客户端的IP地址&#xff1f; 通过超全局数组$_SERVER&#xff1a;echo $_SERVER[REMOTE_PORT]; 3、写…...

glibc内存管理ptmalloc - 多线程内存管理

上图 此图着重描述的是子线程&#xff0c;一个heap&#xff08;由heap_info结构体描述&#xff09;用完&#xff0c;需要另一个的情况。 子线程内存特点 1. 第一个heap物理内存上从低地址到高地址依次是&#xff1a;heap_infomalloc_state(arena)chunks /* arena.c #0 new_…...

区块链食品溯源案例实现(一)

引言&#xff1a; 食品安全问题一直是社会关注的热点&#xff0c;而食品溯源作为解决食品安全问题的重要手段&#xff0c;其重要性不言而喻。传统的食品溯源系统往往存在数据易被篡改、信息不透明等问题&#xff0c;而区块链技术的引入&#xff0c;为食品溯源带来了革命性的变革…...

4S店车辆管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 目录 1. 管…...

SpringBoot+Prometheus+Grafana实现应用监控和报警

一、背景 SpringBoot的应用监控方案比较多&#xff0c;SpringBootPrometheusGrafana是目前比较常用的方案之一。它们三者之间的关系大概如下图&#xff1a; 关系图 二、开发SpringBoot应用 首先&#xff0c;创建一个SpringBoot项目&#xff0c;pom文件如下&#xff1a; <…...

10 - Debian如何让特定用户切换root身份

作者&#xff1a;网络傅老师 特别提示&#xff1a;未经作者允许&#xff0c;不得转载任何内容。违者必究&#xff01; Debian如何让特定用户切换root身份 《傅老师Debian小知识库系列之10》——原创 前言 傅老师Debian小知识库特点&#xff1a; 1、最小化拆解Debian实用技能…...

HPT发布HyperGAI 多模态大模型:性能领先GPT-4V,全面胜过Gemini Pro

前言 HyperGAI研究团队自豪地宣布推出HPT——新一代领先的多模态大型语言模型&#xff08;Multimodal Large Language Model, Multimodal LLM&#xff09;。作为人工通用智能&#xff08;Artificial General Intelligence, AGI&#xff09;构建的基石&#xff0c;HPT跨入多模态…...

汇春科技之MDT10F684

目录 第一、时钟 第二&#xff0c;定时器Timer0 第三&#xff0c;pwm 汇春官网&#xff1a;汇春科技 (yspringtech.com) 汇春是麦肯的原厂&#xff0c;以下是两个论坛&#xff0c;其中都有关于麦肯单片机的学习论坛&#xff0c;可以参考学习&#xff0c;第一个叫英锐恩&…...

【Vue3笔记01】如何使用Vue3和Vite搭建前端项目的基础开发环境

这篇文章,主要介绍如何使用Vue3和Vite搭建前端项目的基础开发环境【知识星球】。 目录 一、搭建项目环境 1.1、前提条件 1.2、开始搭建 1.3、下载依赖...

软考高级架构师:信息安全概念和例题

一、AI 讲解 信息安全是保障信息资产免受各种威胁的一系列措施和活动的总称&#xff0c;其目的是保护信息的机密性、完整性、可用性、可控性和可审查性&#xff0c;确保信息系统的正常运行。信息安全的范围涵盖了设备安全、数据安全、内容安全和行为安全。网络安全漏洞和网络安…...

Lilishop商城(windows)本地部署【docker版】

Lilishop商城&#xff08;windows&#xff09;本地部署【docker版】 部署官方文档&#xff1a;LILISHOP-开发者中心 https://gitee.com/beijing_hongye_huicheng/lilishop 本地安装docker https://docs.pickmall.cn/deploy/win/deploy.html 命令端页面 启动后docker界面 注…...

# 14 React 自定义Hook详解

自定义 Hook 是一个函数&#xff0c;其名称以 “use” 开头&#xff0c;函数内部可以调用其他 Hook。自定义 Hook 是一个函数&#xff0c;其名称以 “use” 开头&#xff0c;函数内部可以调用其他 Hook。下面是几个自定义 Hook 的例子以及需要注意的知识&#xff1a; 1. 使用状…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...