mysql 1356_MySQL视图定义者权限和错误1356

背景

我有一个MySQL表G.devTest,看起来像这样:MySQL视图定义者权限和错误1356

+----+------+

| id | j |

+----+------+

| 1 | 5 |

| 2 | 9 |

| 3 | 4 |

| 4 | 7 |

+----+------+

登录作为我的用户l,我可以创建和基于一个简单的视图中选择在这个表上没有问题:

> create view devTestV as select * from devTest;

Query OK, 0 rows affected (0.02 sec)

> select * from devTestV;

+----+------+

| id | j |

...

的问题

我想使用只能在devTest基于这样的观点:

> create view devTestV2 as select a.id, a.j, b.avg from devTest a cross

join (select avg(j) avg from devTest) b;

首先出现做工精细,但当我试着从中选择,事情出差错:

> select * from devTestV2;

ERROR 1356 (HY000): View 'G.devTestV2' references invalid table(s)

or column(s) or function(s) or definer/invoker of view lack rights to use

them

分析

我们知道devTest存在,其列id和j,因此错误的“定义者/调用者”部分必须是相关的。我的用户l,视图的定义者(默认情况下使用定义者的权限)必须缺少一些权限。这一结论得到以下事实的证实:当由root用户创建时,可以访问相同的视图。

然而,我的用户在G数据库中所有对象的所有权限:

> show grants;

...

| GRANT ALL PRIVILEGES ON `G`.* TO 'l'@'%'

...

那么,做我的用户缺乏,防止它从devTestV2选择?

+0

你有没有想过这里发生了什么? –

+0

@Barmar不要!为了避免这种情况,我采取了以root用户身份创建视图。 任何想法? –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值