MySQL 9从入门到性能优化-权限表

embedded/2024/10/25 11:23:44/

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客

《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-CSDN博客

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中,由mysql_install_db脚本初始化。存储账户权限信息的表主要有user、db、host、tables_priv、columns_priv和procs_priv。本节将介绍这些表的内容和作用。

13.1.1  user表

user表是MySQL中最重要的一张权限表,记录了允许连接到服务器的账号信息,里面的权限是全局级的。例如,一个用户在user表中被授予了DELETE权限,则该用户可以删除MySQL服务器上所有数据库中的任何记录。MySQL中user表的常用字段如表13.1所示。

这些字段可以分为4类,分别是用户列、权限列、安全列和资源控制列。

1. 用户列

user表的用户列包括Host、User、authentication_string,分别表示主机名、用户名和密码。其中User和Host为User表的联合主键。当用户与服务器之间建立连接时,输入的账户信息中的用户名称、主机名和密码必须匹配User表中对应的字段,只有3个值都匹配的时候,才允许连接的建立。这3个字段的值就是创建账户时保存的账户信息。修改用户密码时,实际就是修改user表的authentication_string字段的值。

2. 权限列

user表的权限列字段从Select_priv到Create_tablespace_priv。权限列中的字段决定了用户的权限,描述了在全局范围内允许对数据和数据库进行的操作。这些权限不仅包括查询权限、修改权限等普通权限,还包括关闭服务器、超级权限和加载用户等高级权限。普通权限用于操作数据库,高级权限用于数据库管理。

user表中对应的权限是针对所有用户数据库的。这些字段值的类型为ENUM,可以取的值只能为Y和N,Y表示该用户有对应的权限;N表示用户没有对应的权限。查看user表的结构可以看到,这些字段的值默认都是N。可以使用GRANT语句或UPDATE语句更改user表的这些字段来修改用户对应的权限。

3. 安全列

安全列只有6个字段,其中两个是ssl相关的,即ssl_type和ssl_cipher,用于加密;两个是x509相关的,即x509_issuer和x509_subject,x509标准可用于标识用户;plugin字段标识可以用于验证用户身份的插件,如果该字段为空,服务器使用内建授权验证机制验证用户身份;password_expired用于设置用户的过期时间。读者可以通过SHOW VARIABLES LIKE 'have_openssl'语句来查询服务器是否支持ssl功能。

4. 资源控制列

资源控制列的字段用来限制用户使用的资源,包含4个字段,分别为:

  • max_questions:用户每小时允许执行的查询操作次数。
  • max_updates:用户每小时允许执行的更新操作次数。
  • max_connections:用户每小时允许执行的连接操作次数。
  • max_user_connections:用户允许同时建立的连接次数。

若一个小时内用户查询或者连接数量超过资源控制限制,则该用户将被锁定,直到下一个小时,才可以再次执行对应的操作。可以使用GRANT语句更新user表中的字段值。

13.1.2  db表

db表是MySQL数据中非常重要的权限表,表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。db表比较常用,其结构如表13.2所示。

1. 用户列

db表的用户列有3个字段,分别是Host、User、Db,标识从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键。host表不存储用户名称,用户列只有2个字段,分别是Host和Db,表示从某个主机连接的用户对某个数据库的操作权限,其主键包括Host和Db两个字段。host表很少用到,一般情况下使用db表就可以满足权限控制需求了。

2. 权限列

db表中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表中查找相匹配的值,并根据查询的结果决定用户的操作是否被允许。

13.1.3  tables_priv表和columns_priv表

tables_priv表用来对表设置操作权限,columns_priv表用来对表的某一列设置权限。tables_priv表和columns_priv表的结构分别如表13.3和表13.4所示。

tables_priv表中有8个字段,分别是Host、Db、User、Table_name、Grantor、Timestamp、Table_priv和Column_priv,各个字段说明如下:

(1)Host、Db、User和Table_name字段分表示主机名、数据库名、用户名和表名。

(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用来指定对哪些数据列具有操作权限。

13.1.4  procs_priv表

procs_priv表可以对存储过程和存储函数设置操作权限。procs_priv表的结构如表13.5所示。

procs_priv表中包含8个字段,分别是Host、Db、User、Routine_name、Routine_type、Grantor、Proc_priv和Timestamp,各个字段的说明如下:

(1)Host、Db和User字段分别表示主机名、数据库名和用户名。

(2)Routine_name字段表示存储过程或函数的名称。

(3)Routine_type字段表示存储过程或函数的类型。Routine_type字段有两个值,分别是FUNCTION和PROCEDURE:FUNCTION表示这是一个函数,PROCEDURE表示这是一个存储过程。

(4)Grantor字段表示是插入或修改该记录的用户。

(5)Proc_priv字段表示拥有的权限,包括Execute、Alter Routine、Grant 3种。

(6)Timestamp字段表示记录更新时间。


http://www.ppmy.cn/embedded/132320.html

相关文章

杨辉三角 II

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…

开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用

一、前言 学习Qwen2-VL ,为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野,更让我们站在科技发展的潮头,紧跟时代的步伐。 Qwen2-VL 具有卓越的图…

C语言程序设计:现代设计方法习题笔记《chapter4》

第一题 示例代码&#xff1a; #include<stdio.h>int main() {printf("Enter a two-digit number: ");int number,ten_n,g_n;scanf_s("%d", &number);ten_n number / 10;g_n number % 10;printf("The reversal is %d%d", g_n, ten_n…

vscode离线状态ssh连接不断输入密码登不上:配置commit_id

如题&#xff0c;vscode在一个离线服务器上&#xff0c;通过remote-ssh登录远程服务器&#xff0c;不断弹出密码框&#xff0c;总是进不去&#xff0c;后来了解到主要是不同vscode版本需要下载对应抑制commit-id的vscode-server-linux-x64.tar.gz包。 1&#xff09;vscode, 点…

【2024最新】Process Lasso使用与安装教学

Process Lasso介绍 Process Lasso 是一款专为 Windows 系统设计的高级进程管理工具&#xff0c;旨在优化系统性能和响应速度。它通过智能调节进程的 CPU 优先级和核心绑定&#xff0c;确保关键应用程序&#xff08;如游戏&#xff09;获得更多的处理资源。用户可以手动设置进程…

OpenCV系列教程五:图像的分割与修复

文章目录 一、图像分割1.1 分水岭法1.1.1 基本原理1.1.2 实例&#xff1a;使用分水岭算法分割硬币图像 1.2 GrabCut算法1.2.1 原理1.2.2 代码示例1.2.3 交互式grabCut程序 二、 图像修复 《OpenCV系列课程一&#xff1a;图像处理入门&#xff08;读写、拆分合并、变换、注释&am…

【设计模式系列】命令模式

目录 一、什么是命令模式 二、命令模式的角色 三、命令模式的典型应用场景 四、命令模式在Runnable中的应用 一、什么是命令模式 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将一个请求或简单操作封装为一个对象。这个模式提供了一种…

登录163邮箱的滑块验证

登录163邮箱的滑块验证 登录163网易邮箱取数功能&#xff0c;查阅了很多博客的代码都不太稳定或者已失效&#xff0c;下面是经过修改的一个方案&#xff0c;成功率大概在90%以上 def get_verify(self, name处理滑块移动):max_distance self.handle_picture()reality_distanc…