MySQL数据库的权限表

文章目录

  • user 表
  • db 表
  • tables_priv 表
  • columns_priv表

MySQL 数据库中与权限相关的表:user、db、tables_priv、columns_priv。

user 表

mysql> select * from mysql.user\G
*************************** 1. row ***************************Host: localhostUser: rootSelect_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: YReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: Y
Create_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *6969E01196BECE74725D5CD9F8C58F1D7529C352password_expired: Npassword_last_changed: 2020-07-27 10:06:49password_lifetime: NULLaccount_locked: N

mysql.user 表列出可以连接服务器的用户信息,并且存储了用户的全局权限信息。在 mysql.user 表启用的任何权限均是全局权限,即适用于所有数据库的所有表。

如上面的查询结果所示,用户 root@localhostSelect_priv 字段值为 Y,说明该用户可以查询任意数据库的任意表。

当你执行下面的授权语句后,如果 user 表中不存在 test@% 用户,那么就会往 user 表中插入一条记录,如果存在则会将 Select_priv 字段的值设为 Y

mysql> grant select on *.* to 'test'@'%';

db 表

mysql> select * from mysql.db\G
*************************** 1. row ***************************Host: %Db: testUser: Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YGrant_priv: NReferences_priv: YIndex_priv: YAlter_priv: Y
Create_tmp_table_priv: YLock_tables_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: NExecute_priv: NEvent_priv: YTrigger_priv: Y
*************************** 2. row ***************************Host: localhostDb: performance_schemaUser: mysql.sessionSelect_priv: YInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NGrant_priv: NReferences_priv: NIndex_priv: NAlter_priv: N
Create_tmp_table_priv: NLock_tables_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NExecute_priv: NEvent_priv: NTrigger_priv: N

mysql.db 表存储用户对数据库的权限数据。这里开启的权限适用于一个数据库中的所有表。

我们看下上面查询结果的第一条记录可得知,任何用户都可以访问数据库 test,因为 User 字段是空。但是用户除了 Grant_privAlter_routine_privExecute_priv 没有权限之外,其它权限都有。

我们再看下上面查询结果的第二条记录可得知,用户 mysql.session@localhost 对数据库 performance.schema 除了拥有 Select_priv 权限之外,其它权限都没有。

当你执行下面的语句后,如果 mysql.db 表不存在用户 test@% 对数据库 test 的授权记录,那么会往 mysql.db 表插入一条记录;如果存在该用户的授权记录,则会将字段 Select_priv 的值设为 Y

mysql> grant select on testdb.* to 'test'@'%';

tables_priv 表

mysql> select * from tables_priv\G 
*************************** 1. row ***************************Host: localhostDb: sysUser: mysql.sysTable_name: sys_configGrantor: root@localhostTimestamp: 2020-07-27 10:06:49Table_priv: Select
Column_priv: 
*************************** 3. row ***************************Host: 127.0.0.1Db: qydpwUser: lwxTable_name: tf_userGrantor: root@localhostTimestamp: 2021-10-07 13:16:11Table_priv: Select,Update
Column_priv: 

tables_priv 表存储着用户对某个表的权限数据,这里开启的一个权限适用于一个表的所有列。

看上面的查询结果的第一条记录可得知,用户 mysql.sys@localhost 对表 sys.sys_config 只有 Selec 权限;看上面查询结果的第二条记录可得知,用户 lwx@127.0.0.1 对表 qydpw.tf_userSelectUpdate 权限。

当你执行下面的语句后,如果表中没有用户对应的记录,则会往表中插入一条记录;如果存在该用户的记录,则会往字段 Table_priv 存入一个值 Select

mysql> grant select on testdb.student to 'test'@'%';

columns_priv表

columns_priv 表指定列级权限。这张表保存着用户对某个表的特定列的权限数据。这里指定的权限适用于一个表的特定列。

当你执行下面的语句:

mysql> grant select(advice_id,user_id) on qydpw.tf_advice to lwx@127.0.0.1;

会往表 columns_priv 插入两条记录,表示用户 lwx@127.0.0.1 对表的 advice_iduser_id 拥有 Select 权限:

mysql> select * from mysql.columns_priv;
+-----------+-------+------+------------+-------------+---------------------+-------------+
| Host      | Db    | User | Table_name | Column_name | Timestamp           | Column_priv |
+-----------+-------+------+------------+-------------+---------------------+-------------+
| 127.0.0.1 | qydpw | lwx  | tf_advice  | advice_id   | 0000-00-00 00:00:00 | Select      |
| 127.0.0.1 | qydpw | lwx  | tf_advice  | user_id     | 0000-00-00 00:00:00 | Select      |
+-----------+-------+------+------------+-------------+---------------------+-------------+
2 rows in set (0.00 sec)

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

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

相关文章

jakarta ee_MicroProfile在Jakarta EE时代的作用

jakarta ee自创建以来,MicroProfile赢得了广泛的关注,并制定了各种规格。 最初,它的创建是为了在多个供应商的推动下,以更快的速度推进微服务世界的企业Java。 现在,随着在Eclipse Foundation下将Java EE转换为Jakarta…

Linux系统下MySQL数据库的超级管理员root的密码忘记/忘记密码怎么办?

文章目录方法一方法二方法三方法一 1.添加登录跳过权限检查配置 修改 /etc/my.cnf 文件,在 [mysqld] 配置节点添加 skip-grant-tables 配置 [mysqld] skip-grant-tables2.重新启动mysql服务 service mysqld restart3.修改密码 添加登录跳过权限检查配置后&#x…

Mybatis多参数封装到map中,多条件查询

1.UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.william.domain.User;import java.util.List;public interface UserMapper {/*** 多参数封装到map中&#xff0c;多条件查询* param map* return*/List<User> findBy…

jax-rs配置_具有MicroProfile配置的可配置JAX-RS ExceptionMapper

jax-rs配置当使用JAX-RS创建REST服务时&#xff0c;通常不返回任何内容&#xff08;例如HTTP 201/2/4等&#xff09;或某些数据&#xff08;可能采用JSON格式&#xff08;因此HTTP 200&#xff09;&#xff0c;或者返回某些异常/错误&#xff08;因此HTTP 4xx或5xx&#xff09;…

MySQL数据库修改用户登录密码的三种方式

文章目录一、更新 mysql.user 表二、用 set password 命令三、使用 mysqladmin 命令提醒&#xff1a;MYSQL5.7 版本后不再支持password()函数和password字段。 一、更新 mysql.user 表 mysql> use mysql; mysql> update user set passwordpassword(123456) where userr…

Mybatis多条件直接查询

1.UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.william.domain.User;import java.util.List;public interface UserMapper {/*** 根据多条件直接查询* param username* param sex* param startIndex* param pageSize* re…

java 正在验证应用程序_Java应用程序中的验证

java 正在验证应用程序我经常看到的项目几乎没有任何有意识的数据验证策略。 他们的团队在截止日期&#xff0c;明确要求的巨大压力下工作&#xff0c;只是没有足够的时间以适当且一致的方式进行验证。 因此&#xff0c;数据验证代码随处可见&#xff1a;JavaScript片段&#x…

Mybatis多条件直接查询Param注解版

1.UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.william.domain.User;import java.util.List;public interface UserMapper {/*** 多条件直接查询Param注解版* param username* param sex* param startIndex* param pageS…

WPS for MacOS如何设置自动句首字母大写

在顶部菜单栏&#xff0c;点击【文件】–>【文字偏好设置】或者点击左上角的【文件】–>【文字偏好设置】&#xff1a;

java 和javafx_Java,JavaFX的流利设计风格文本字段和密码字段

java 和javafx我刚刚发布了Java版本4.5 &#xff0c;JavaFX主题JMetro 。 此版本为“文本字段”和“密码字段”添加了新样式。 和往常一样&#xff0c;受到Fluent Design的启发。 在这篇文章中&#xff0c;我将详细介绍这个新版本。 JMetro版本4.5 就像我在简介中所说的那样&…

WPS for MacOS如何设置自动编号

在顶部菜单栏&#xff0c;点击【文件】–>【文字偏好设置】或者点击左上角的【文件】–>【文字偏好设置】&#xff1a;

Mybatis结果集映射

一、使用场景 当数据库里的列名和实体类的属性名不一致&#xff0c;就需要进行结果映射 二、UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.william.domain.User; import org.apache.ibatis.annotations.Param;import …

activemq 性能测试_ActiveMQ性能测试

activemq 性能测试我们使用ActiveMQ作为消息传递层–发送大量需要低延迟的消息。 通常它可以正常工作&#xff0c;但是在某些情况下我们已经看到性能问题。 在花了太多时间测试我们的基础结构之后&#xff0c;我想我已经学到了有关ActiveMQ的一些有趣的东西&#xff1a;它可能真…

WPS for MacOS如何设置自动拼写检查

在顶部菜单栏&#xff0c;点击【文件】–>【文字偏好设置】或者点击左上角的【文件】–>【文字偏好设置】&#xff1a;

jdk8 bug_JDK Bug系统浪费时间

jdk8 bug当我在OpenJDK jdk-dev邮件列表中看到Jesper Wilhelmsson的消息标题“ Introducing time浪费者 ”时&#xff0c;我想到了该消息的可能内容的几种可能性。 在阅读该链接与单击链接后出现消息之间的第二个左右时间内 &#xff0c;我想知道消息是否与以下主题之一有关&am…

角度和弧度的计算关系

一、角的两种单位 “ 弧度”和“度”是度量角大小的两种不同的单位。就像“米”和“市尺”是度量长度大小的两种不同的单位一样。 二、弧度的定义 角&#xff08;弧度&#xff09;&#xff1d;弧长/半径 圆的周长是半径的 2π倍&#xff0c;所以一个周角&#xff08;360度&a…

关键字搜索

1.1.1 需求分析 在首页或搜索页输入关键字&#xff0c;点击搜索 显示列表搜索结果&#xff1a; 1.1.2实现思路 &#xff08;1&#xff09;后端使用匹配查询和布尔查询 &#xff08;2&#xff09;前端向后端传递map&#xff08;因为提交的不仅仅是关键字&#xff0c;还有品牌…

java中线程死锁及避免_如何避免Java线程中的死锁?

java中线程死锁及避免如何避免Java中的死锁&#xff1f; 是Java面试中最受欢迎的问题之一&#xff0c;也是本季多线程的风格&#xff0c;主要是在高层提出&#xff0c;并带有很多后续问题。 尽管问题看起来很基础&#xff0c;但是一旦您开始深入研究&#xff0c;大多数Java开发…

MySQL查询数据字典_存储过程_函数_视图元数据_表元数据_触发器

文章目录一、查询所有的存储过程二、查询某个数据库下的存储过程三、查询所有的函数四、查询某个数据库下的函数五、查看存储过程详情六、查看函数详情七、查看存储过程的创建源码八、查看函数的创建源码九、查看视图元数据十、查看表元数据十一、查看触发器一、查询所有的存储…