当前位置:首页 > 文章列表 > 数据库 > MySQL > 浅谈MySQL user权限表

浅谈MySQL user权限表

来源:脚本之家 2023-01-07 12:16:03 0浏览 收藏

怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《浅谈MySQL user权限表》,涉及到MySQLuser、权限表,有需要的可以收藏一下

MySQL 在安装时会自动创建一个名为 mysql 的数据库,mysql 数据库中存储的都是用户权限表。用户登录以后,MySQL 会根据这些权限表的内容为每个用户赋予相应的权限。

user 表是 MySQL 中最重要的一个权限表,用来记录允许连接到服务器的账号信息。需要注意的是,在 user 表里启用的所有权限都是全局级的,适用于所有数据库。

user 表中的字段大致可以分为 4 类,分别是用户列、权限列、安全列和资源控制列,下面主要介绍这些字段的含义。

用户列

用户列存储了用户连接 MySQL 数据库时需要输入的信息。需要注意的是 MySQL 5.7 版本不再使用 Password 来作为密码的字段,而改成了 authentication_string。

MySQL 5.7 版本的用户列如表 1 所示。

字段名 字段类型 是否为空 默认值 说明
Host char(60) NO 主机名
User char(32) NO 用户名
authentication_string text YES 密码

表 1:user 表的用户列

用户登录时,如果这 3 个字段同时匹配,MySQL 数据库系统才会允许其登录。创建新用户时,也是设置这 3 个字段的值。修改用户密码时,实际就是修改 user 表的 authentication_string 字段的值。因此,这 3 个字段决定了用户能否登录。

权限列

权限列的字段决定了用户的权限,用来描述在全局范围内允许对数据和数据库进行的操作。

权限大致分为两大类,分别是高级管理权限和普通权限:

  • 高级管理权限主要对数据库进行管理,例如关闭服务的权限、超级权限和加载用户等;
  • 普通权限主要操作数据库,例如查询权限、修改权限等。

user 表的权限列包括 Select_priv、Insert_ priv 等以 priv 结尾的字段,这些字段值的数据类型为 ENUM,可取的值只有 Y 和 N:Y 表示该用户有对应的权限,N 表示该用户没有对应的权限。从安全角度考虑,这些字段的默认值都为 N。

字段名 字段类型 是否为空 默认值 说明
Select_priv enum('N','Y') NO N 是否可以通过SELECT 命令查询数据
Insert_priv enum('N','Y') NO N 是否可以通过 INSERT 命令插入数据
Update_priv enum('N','Y') NO N 是否可以通过UPDATE 命令修改现有数据
Delete_priv enum('N','Y') NO N 是否可以通过DELETE 命令删除现有数据
Create_priv enum('N','Y') NO N 是否可以创建新的数据库和表
Drop_priv enum('N','Y') NO N 是否可以删除现有数据库和表
Reload_priv enum('N','Y') NO N 是否可以执行刷新和重新加载MySQL所用的各种内部缓存的特定命令,包括日志、权限、主机、查询和表
Shutdown_priv enum('N','Y') NO N 是否可以关闭MySQL服务器。将此权限提供给root账户之外的任何用户时,都应当非常谨慎
Process_priv enum('N','Y') NO N 是否可以通过SHOW PROCESSLIST命令查看其他用户的进程
File_priv enum('N','Y') NO N 是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令
Grant_priv enum('N','Y') NO N 是否可以将自己的权限再授予其他用户
References_priv enum('N','Y') NO N 是否可以创建外键约束
Index_priv enum('N','Y') NO N 是否可以对索引进行增删查
Alter_priv enum('N','Y') NO N 是否可以重命名和修改表结构
Show_db_priv enum('N','Y') NO N 是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库
Super_priv enum('N','Y') NO N 是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程;使用SET GLOBAL命令修改全局MySQL变量,执行关于复制和日志的各种命令。(超级权限)
Create_tmp_table_priv enum('N','Y') NO N 是否可以创建临时表
Lock_tables_priv enum('N','Y') NO N 是否可以使用LOCK TABLES命令阻止对表的访问/修改
Execute_priv enum('N','Y') NO N 是否可以执行存储过程
Repl_slave_priv enum('N','Y') NO N 是否可以读取用于维护复制数据库环境的二进制日志文件
Repl_client_priv enum('N','Y') NO N 是否可以确定复制从服务器和主服务器的位置
Create_view_priv enum('N','Y') NO N 是否可以创建视图
Show_view_priv enum('N','Y') NO N 是否可以查看视图
Create_routine_priv enum('N','Y') NO N 是否可以更改或放弃存储过程和函数
Alter_routine_priv enum('N','Y') NO N 是否可以修改或删除存储函数及函数
Create_user_priv enum('N','Y') NO N 是否可以执行CREATE USER命令,这个命令用于创建新的MySQL账户
Event_priv enum('N','Y') NO N 是否可以创建、修改和删除事件
Trigger_priv enum('N','Y') NO N 是否可以创建和删除触发器
Create_tablespace_priv enum('N','Y') NO N 是否可以创建表空间

表 2:user表的权限列

如果要修改权限,可以使用 GRANT 语句为用户赋予一些权限,也可以通过 UPDATE 语句更新 user 表的方式来设置权限。

安全列

安全列主要用来判断用户是否能够登录成功,user 表中的安全列如表 3 所示:

字段名 字段类型 是否为空 默认值 说明
ssl_type enum('','ANY','X509','SPECIFIED') NO 支持ssl标准加密安全字段
ssl_cipher blob NO 支持ssl标准加密安全字段
x509_issuer blob NO 支持x509标准字段
x509_subject blob NO 支持x509标准字段
plugin char(64) NO mysql_native_password 引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户
password_expired enum('N','Y') NO N 密码是否过期 (N 未过期,y 已过期)
password_last_changed timestamp YES 记录密码最近修改的时间
password_lifetime smallint(5) unsigned YES 设置密码的有效时间,单位为天数
account_locked enum('N','Y') NO N 用户是否被锁定(Y 锁定,N 未锁定)

表 3:user 表的安全列

注意:即使 password_expired 为“Y”,用户也可以使用密码登录 MySQL,但是不允许做任何操作。

通常标准的发行版不支持 ssl,读者可以使用 SHOW VARIABLES LIKE "have_openssl" 语句来查看是否具有 ssl 功能。如果 have_openssl 的值为 DISABLED,那么则不支持 ssl 加密功能。

资源控制列

资源控制列的字段用来限制用户使用的资源,user 表中的资源控制列如表 4 所示。

字段名 字段类型 是否为空 默认值 说明
max_questions int(11) unsigned NO 0 规定每小时允许执行查询的操作次数
max_updates int(11) unsigned NO 0 规定每小时允许执行更新的操作次数
max_connections int(11) unsigned NO 0 规定每小时允许执行的连接操作次数
max_user_connections int(11) unsigned NO 0 规定允许同时建立的连接次数

表 4:user 表的资源控制列

以上字段的默认值为 0,表示没有限制。一个小时内用户查询或者连接数量超过资源控制限制,用户将被锁定,直到下一个小时才可以在此执行对应的操作。可以使用 GRANT 语句更新这些字段的值。

今天带大家了解了MySQLuser、权限表的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

版本声明
本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
MySQL REVOKE实现删除用户权限MySQL REVOKE实现删除用户权限
上一篇
MySQL REVOKE实现删除用户权限
解决mysql模糊查询索引失效问题的几种方法
下一篇
解决mysql模糊查询索引失效问题的几种方法
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 谱乐AI:青岛艾夫斯科技的多模型AI音乐生成工具
    谱乐AI
    谱乐AI是由青岛艾夫斯科技有限公司开发的AI音乐生成工具,采用Suno和Udio模型,支持多种音乐风格的创作。访问https://yourmusic.fun/,体验智能作曲与编曲,个性化定制音乐,提升创作效率。
    3次使用
  • Vozo AI:超真实AI视频换脸工具,提升创意内容制作
    Vozo AI
    探索Vozo AI,一款功能强大的在线AI视频换脸工具,支持跨性别、年龄和肤色换脸,适用于广告本地化、电影制作和创意内容创作,提升您的视频制作效率和效果。
    3次使用
  • AIGAZOU:免费AI图像生成工具,简洁高效,支持中文
    AIGAZOU-AI图像生成
    AIGAZOU是一款先进的免费AI图像生成工具,无需登录即可使用,支持中文提示词,生成高清图像。适用于设计、内容创作、商业和艺术领域,提供自动提示词、专家模式等多种功能。
    3次使用
  • Raphael AI:Flux.1 Dev支持的免费AI图像生成器
    Raphael AI
    探索Raphael AI,一款由Flux.1 Dev支持的免费AI图像生成器,无需登录即可无限生成高质量图像。支持多种风格,快速生成,保护隐私,适用于艺术创作、商业设计等多种场景。
    3次使用
  • Canva可画AI生图:智能图片生成新选择
    Canva可画AI生图
    Canva可画AI生图利用先进AI技术,根据用户输入的文字描述生成高质量图片和插画。适用于设计师、创业者、自由职业者和市场营销人员,提供便捷、高效、多样化的视觉素材生成服务,满足不同需求。
    3次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码