美文网首页
【MySQL】MySQL修改用户名后无法使用视图

【MySQL】MySQL修改用户名后无法使用视图

作者: miniy_7 | 来源:发表于2019-10-29 09:15 被阅读0次

    数据库做迁移以后,关闭了MySQL数据库的远程访问,只能通过指定的host进行连接。通过访问时报错,具体错误信息如下
    [Err] 1045 - Access denied for user 'iqm'@'%' (using password: YES)

    原因: 创建 view 默认情况下,MySQL view 安全验证的方式(SQL SECURITY)是 definer方式。另外一种方式为 invoker,这两种方式区别如下

    • definer: 这种方式调用视图或者存储过程的用户必须拥有此视图(存储过程)的EXECUTE权限,并且definer指定的用户必须存在mysql.user表中。
    • invoker: 这种方式不会检查视图或者存储过程指定的用户。只要调用者拥有权限就可以调用。

    视图的创建语法:

    CREATE
        [OR REPLACE]
        [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
        [DEFINER = { user | CURRENT_USER }]
        [SQL SECURITY { DEFINER | INVOKER }]
        VIEW view_name [(column_list)]
        AS select_statement
        [WITH [CASCADED | LOCAL] CHECK OPTION]
    

    eg: definer 模式创建视图

    create definer='root'@'%' 
    view demo as
    ...
    

    eg: invoker 模式创建视图

    create definer='root'@'%'
    SQL SECURITY INVOKER
    view demo as
    ...
    

    相关文章

      网友评论

          本文标题:【MySQL】MySQL修改用户名后无法使用视图

          本文链接:https://www.haomeiwen.com/subject/rcbvvctx.html