【MySQL】MySQL修改用户名后无法使用视图
2019-10-29 本文已影响0人
miniy_7
数据库做迁移以后,关闭了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
...