Mysql权限设置

来源:互联网 发布:上海网络编辑招聘 编辑:程序博客网 时间:2024/06/06 04:10

端午在外玩的时候,被告知Mysql的主从数据库连接出了问题,急忙忙的赶回家检查,发现是某个系统的bug导致本该只读的表被插入了数据。

接着与主库同步过来的数据冲突。

为了杜绝此类事情发生,决定给系统设置单独的权限用户。

首先建立用户

create user puhuo identified by 'XXX'

flush privileges

切到puhuo用户,会发现看不见从库的schema

赋予从库的读权限

grant select on cardb.* to puhuo

切到puhuo用户,会发现从库的schema及表可见,但不能进行dml操作

接着赋予指定表,dml操作权限

grant update,delete,insert on cardb.t_cnct_car to puhuo;

切到puhuo用户,发现指定表的dml操作OK了

接着需要给PROCEDURE付权限

grant execute on procedure cardb.test to puhuo;

接着问题来了,puhuo用户有了procedure的执行权限,但procedure内有一个对t_price_base表的insert操作,puhuo并没有对于t_price_base的dml操作权限。

执行结果会怎样?

Error Code: 1142. INSERT command denied to user 'puhuo'@'10.167.219.133' for table 't_price_base'

检查procedure头发现

DELIMITER $$
CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `test`()
    SQL SECURITY INVOKER
BEGIN

说明权限依赖于调用者的权限。

如果稍加修改,SQL SECURITY DEFINER
此时,权限依赖于定义者也就是root的权限。

再次执行,执行成功。

 

0 0
原创粉丝点击