首页 > 其他分享 >grant之后要跟着flush privileges吗?

grant之后要跟着flush privileges吗?

时间:2022-11-13 00:44:56浏览次数:29  
标签:grant privileges 内存 flush 权限 ua

grant之后要跟着flush privileges吗?

grant 语句会同时修改数据表和内存,判断权限使用的是内存数据。规范地使用grant和revoke语句,不需要随后加上flush privileges语句的。

flush privileges 其实就是清空了内存中的权限,然后重新从权限表加载数据。因此如果用DML语句改了系统权限表,就需要用flush privileges重建内存的权限。

全局权限

全局权限,作用于整个 MySQL 实例,这些权限信息保存在 mysql 库的 user 表里。如果我要给用户 ua 赋一个最高权限的话,语句是这么写的

grant all privileges on *.* to 'ua'@'%' with grant option;

这个 grant 命令做了两个动作:、

  1. 磁盘上,将 mysql.user 表里,用户’ua’@’%'这一行的所有表示权限的字段的值都修改为‘Y’;
  2. 内存里,从数组 acl_users 中找到这个用户对应的对象,将 access 值(权限位)修改为二进制的“全 1”。

重点来了,对于一个已经存在的连接,它的全局权限不受grant命令的影响,原因是每个连接已经将权限拷贝到本线程内存中了。grant对于全局权限,只对接下来新创建的连接有用。

db 权限

grant all privileges on db1.* to 'ua'@'%' with grant option;

参照全局权限,修改了mysql.db表,权限位字段设置为Y,内存里修改了acl_dbs. 权限位设置为全1

跟全局权限不同,grant 库权限,会对已存在的连接生效,除非在开始的时候用use db 语句将这个库的权限保存到session中,在切换出db库前,会一直有权限。

表权限和列权限

表权限存放在mysql.table_priv, 列权限存放在mysql.columns_priv, 内存中表,列权限组合起来构成内存的hash结构 column_priv_hash。

create table db1.t1(id int, a int);

grant all privileges on db1.t1 to 'ua'@'%' with grant option;
GRANT SELECT(id), INSERT (id,a) ON mydb.mytbl TO 'ua'@'%' with grant option;

对这两类权限的修改,也会马上影响已存在的连接。

revoke 回收权限

revoke all privileges on db1.* from 'ua'@%;
回收ua用户对db1数据库的权限

标签:grant,privileges,内存,flush,权限,ua
From: https://www.cnblogs.com/linyihai/p/16885229.html

相关文章

  • Mac 使用 之 Agreeing to the Xcode/iOS license requires admin privileges
    LZ-Says:少言,多行,贯彻Justdoit前言不知不觉中,玩小Mac已经将近一年了,回顾之前,还是有很多的不足。至少,目前还是达不到文哥形如流水的赶脚。不过,慢慢积累,反正Mac的操......
  • 使用vagrant安装虚拟机踩坑记录
    在安装完visualbox和vagrant并且下载配置好本地虚拟机(box)之后,然后init完初始环境之后在启动虚拟机时报了如下错误,没打开Hyper-V服务。然后打开了该服务,但是在重启之后在启......
  • vagrant的安装使用入门(mac环境下)
    安装官网教程:https://developer.hashicorp.com/vagrant/tutorials/getting-started/getting-started-project-setupbrewinstallvagrant#使用brew进行安装brewins......
  • fflush-交互式
    /* LinuxAPI:fflush function:实现交互式*/#include<stdlib.h>#include<stdio.h>#include<unistd.h>voidnemu(void);voidfun_sleep(constchar*c);int......
  • Vagrant定制个性化CentOS7模板
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos关于虚拟机模板想用vagrant搭建hadoop集群,要完成以下准备工作......
  • vagrant + vmware 创建centos7虚拟机
    安装vagrant安装vmware-utility配置环境变量下载vmware-desktop插件vagrantplugininstallvagrant-vmware-desktop下载centos7-boxhttps://mirrors.us......
  • 细说InnoDB缓冲池 buffer pool(free、flush、lru)
    细说InnoDB缓冲池bufferpool(free、flush、lru) 2021-12-1221:57:42    小道仙    126阅读    2评论视频地址 https://www.bilibili.com/video......
  • alter system flush shared_pool命令解析
    文档课题:altersystemflushshared_pool命令解析.数据库:oracle11.2.0.464位场景描述:作为DBA,一定遇到过ORA-04031共享池不够用的情况,该告警主要体现在客户端连接异常以及......
  • grant新建用户失败-新版本已经不支持用一条语句新建用户的同时进行授权操作
    之前对着,《MySQL5.7从入门到精通》一书中,看到数据库的用户管理一章。其中照着书本的代码,进行验证的同时,发现了问题。 目前版本可以通过,新建用户,之后再进行授权操作:cre......
  • Vagrant
    官网下载地址https://www.vagrantup.com/downloadsvagrantautocompleteinstall--bash--zsh查看Vagrant版本vagrant--version查看Vagrant当前所有已安装系统vagra......