zoukankan      html  css  js  c++  java
  • MySQL视图 definer & invoker 权限

    1、创建视图

    1. CREATE
    2. VIEW `NewView`AS
    3. SELECT
    4. `user`.USER_ID,
    5. `user`.USER_NAME,
    6. department.DEPT_ID,
    7. department.DEPT_NAME
    8. FROM
    9. `user` ,
    10. department
    11. WHERE
    12. `user`.DEPT_ID = department.DEPT_ID ;

    2、修改视图

    1. ALTER
    2. ALGORITHM=UNDEFINED
    3. DEFINER=`root`@`127.0.0.1`
    4. SQL SECURITY DEFINER
    5. VIEW `dept_user` AS
    6. select `user`.`USER_ID` AS `USER_ID`,`user`.`USER_NAME` AS `USER_NAME`,`department`.`DEPT_ID` AS `DEPT_ID`,`department`.`DEPT_NAME` AS `DEPT_NAME`
    7. from (`user` join `department`)
    8. where (`user`.`DEPT_ID` = `department`.`DEPT_ID`)
    9. ORDER BY
    10. department.DEPT_NO ASC ;

    3、 给视图赋权

    1. GRANT SELECT, SHOW VIEW ON `NewView`.* TO 'View'@'192.168.%' ;
    2. flush privileges;

    修改后用户还是不能查看,登陆root 也不能查看。

    百度得了下面解决办法:

    登陆工具-视图-设计视图-高级选项, 修改定义者为需要权限用户 或  修改安全性Definer 为invoker

    原理:

    definer和invoker的区别

    在创建视图或者是存储过程的时候,是需要定义安全验证方式的(也就是安全性SQL SECURITY),其值可以为definer或invoker,表示在执行过程中,使用谁的权限来执行。

    definer:由definer(定义者)指定的用户的权限来执行

    invoker:由调用这个视图(存储过程)的用户的权限来执行

    4、修复视图

    在MySQL中当一个视图所依赖的的表有变化时,打开或修改视图会出现如下面的错误信息:

    1356 - View 'database.view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them.

    解决:

    从MySQL的information_schema中的视图表View中,用下面的语句修复视图,如:

    select VIEW_DEFINITION from information_schema.views where TABLE_SCHEMA='database' and TABLE_NAME='view'
    原文地址:https://blog.csdn.net/zhangxueleishamo/article/details/83056598
  • 相关阅读:
    Oracle中有大量的sniped会话
    Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
    汉字转换为拼音以及缩写(javascript)
    高效率随机删除数据(不重复)
    vs2010 舒服背景 优雅字体 配置
    mvc中的ViewData用到webfrom中去
    jquery ajax return值 没有返回 的解决方法
    zShowBox (图片放大展示jquery版 兼容性好)
    动感效果的TAB选项卡 jquery 插件
    loading 加载提示······
  • 原文地址:https://www.cnblogs.com/jpfss/p/11004692.html
Copyright © 2011-2022 走看看