美文网首页
【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