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

数据库做迁移以后,关闭了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
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT从业者的职业生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值