mysql 权限控制
1、mysql的权限是,从某处来的用户对某对象的权限。
2、mysql的权限采用白名单策略,指定用户能做什么,没有指定的都不能做。
3、权限校验分成两个步骤:
a、能不能连接,检查从哪里来,用户名和密码,常见错误 ERROR 1045 (28000): Access denied for user ...
b、能不能执行操作,粒度从粗到细,分别为:mysql.user, mysql.db, msql.tables_priv, mysql.columns_priv, mysql.proc_priv。需要注意的是,这些表各有分工,但是在权限分配上有一定的重合。可以这样理解,mysql 先检查对大范围是否有权限,如果没有再到小范围里去检查。比如:先检查对这个数据库是否有select权限,如果有,就允许执行。如果没有,再检查对表是否有select权限,一直到最细粒度,也没有权限,就拒绝执行。举例来说:要检查张三能否控制一个团,我只要先检查张三能否控制一个军,如果可以,就是有权限,如果不行,再检查张三能否控制一个师。。。。因此,粒度控制越细,权限校验的步骤越多,性能越差,需要考虑。
4、mysql服务启动之后,就会把权限有关的表的数据读到内存中,对权限做的修改,是否会即时生效?要看情况,手动修改表数据,需要 flush privileges
5、创建用户 create user,修改密码 set password,注意 alter user只是设置密码过期,可以登录,但是不能执行任何操作,必须从新设置密码,删除用户 drop user
6、host+user 标示唯一的一个用户,也就是说都叫张三,从不同地方来的张三是两个用户,他们有不同的权限。
7、那么问题来了,表中有两条记录:'root'@'192.168.1.101' 和 'root'@'%', 现在root来登录,mysql 怎么匹配呢?认为是哪个root呢?
mysql 对用户进行了排序,先对host排序,再对user排序,小范围在前面,大范围在后面,从上往下匹配。
8、权限授予,grant 权限 on 对象 to 用户@哪里来 identified by 密码
9、收回权限,revoke 权限 on 对象 from 用户@哪里来,注意revoke 必须要与grant 对应,也就是说,只能收回授予的权限。
10、那么问题来了,我授予张三 select的权限,现在revoke all privileges 也不能收回张三select的权限,因为没有对张三 grant all privileges,怎么解决这个问题?
使用 revoke all privileges,grant option from user
11、权限级别:从某台主机来的某个用户,对某个数据库中某个表的某些列的某部分记录,是否有权限。
12、全局:对象是mysql服务的所有数据库,包含服务级的管理权限,比如showdown
13、数据库:对象是某一个数据库
14、表:对象是数据库中某个表
15、列:对象是表中的某个列,比如:grant select (name) on xxx to xxx
16、程序:对象是存储过程和方法。
17、information_scheme,数据库和表是存放数据的,那么谁来存放 数据库和表这些信息呢? information_scheme 就是记录数据库和表的,需要注意的是,infromation_scheme没有对应的物理文件,它是mysql在内存中维护的。
18、权限设定原则:
a、尽量缩小权限
b、按业务,分离用户,不同的业务对应不同的用户
c、避免权限粒度太细,因为mysql权限检查,会影响性能。
19、文件泄密,linux下mysql客户端执行的操作记录在文件 ~/.mysql_history中,输出重定向/dev/null
20、密码丢失怎么办?
a、mysql启动,增加选项重置密码
b、mysql启动,增加选项不检查权限,登陆后修改密码,退出重启启动。
mysql 权限控制的更多相关文章
- mysql 权限控制具体解释
概述 mysql权限控制在不同的上下文和不同的操作水平上都能够进行控制,他们包括例如以下几个 ** 管理权限能够同意用户管理mysql server的操作. 这些权限控制是全局的,不是针对某个特定的数 ...
- Mysql权限控制 - 允许用户远程连接
Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...
- Mysql权限控制 - 允许用户远程连接(转载)
Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...
- 170424、Mysql权限控制 - 允许用户远程连接
Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...
- mysq'l系列之10.mysql优化&权限控制
网站打开慢如何排查 1.打开网页, 用谷歌浏览器F12, 查看network: 哪个加载时间长就优化哪个 2.如果是数据库问题 2.1 查看大体情况 # top # uptime //load av ...
- 案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/118685521 长期持续带来更多项目与技术分享 ...
- Mysql用户权限控制(5.7以上版本)
1.1. 最简单的MySql权限 最简单也是最高效的,如果解决新手们删库跑路的问题其实也是很简单的,对于正式库只给一个增删改查的权限,或者只给一个查询权限(是不是就解决了删库的可能性?) 使用Ro ...
- mysql权限管理
经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! 一.MYSQL ...
- yii2搭建完美后台并实现rbac权限控制案例教程
作者:白狼 出处:www.manks.top/article/yii2_frame_rbac_template 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 ...
随机推荐
- PHP判断键值数组是否存在,使用empty或isset或array_key_exists
<?php $a = array('a'=>1, 'b'=>0, 'c'=>NULL); echo 'a test by empty: ' , empty($a['a']) ...
- JQuery的$(document).ready(function(){})与JS的window.onload 的各自优势!
由于项目需要,使用JQuery也有相当一段时间了.由于经常要处理DOM节点加载.图片显示以及动态资源请求,所以对$(document).ready(function(){})理解也越来越深了,所有在此 ...
- Cube Stacking
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 21350 Accepted: 7470 Case T ...
- 高效通信模型之 - 网络通信I/O模式( Windows)
#Socket事件 >FD_CONNECT:通常由Client端socket调用socket API函数时触发 >FD_ACCEPT:通常发生在server端的事件 >网络传输服 ...
- ByteBuffer解析
一.前言 前一篇文章我们介绍了Android中直播视频技术的基础大纲知识,这里就开始一一讲解各个知识点,首先主要来看一下视频直播中的一个重要的基础核心类:ByteBuffer,这个类看上去都知道了,是 ...
- 2016年12月13日 星期二 --出埃及记 Exodus 21:8
2016年12月13日 星期二 --出埃及记 Exodus 21:8 If she does not please the master who has selected her for himsel ...
- LYK 快跑!(run)
LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB[题目描述] LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在 ...
- Android编译选项eng、user、userdebug的区别
eng:debug 版本 user: release 版本 userDebug版本:部分debug版本 LOCAL_MODULE_TAGS := user eng optional test这个样子. ...
- adb命令大全「含shell和wait-for-devices等」
adb shell 大全: http://adbshell.com/commands 下列表格列出了adb常见命令,注意,它并不是只有adb shell,shell只是其中一个. Category C ...
- 【JSON】Jackson初学,及常用的例子
现在很多公司的项目都基于SOA架构,系统间的调用有许多方式,其中一种常见的是用HTTP协议.以JSON格式返回结果. 这使得JSON的使用更加普遍.而市面上处理JSON的框架五花八门,常见的有JSON ...