0
点赞
收藏
分享

微信扫一扫

(opengauss)明明用户已授权,查询时却出现:“relation “××ד does not exist on dn_6001”的错误

千白莫 2022-04-27 阅读 271

前期步骤(可直接跳到解决方法):

1.创建一个用户user1(会同时默认创建一个同名的schema):

create user user2 password 'Bibdata@123';

2.授予权限,我这里将orders表的所有权限授予user1:

grant all privileges on orders to user1;

我当前的用户是tian。

3.切换到用户user1,并进行orders表的查询:

 \c - username    --使用该命令可切换用户

4.查询orders表,我们可以看到出现了“relation "orders" does not exist on dn_6001”的错误:

问题解决方法:

出现这个问题主要是搜索路径的问题:

我们可以看到,当前的搜索路径为当前用户即user1模式下,而orders表是在授权模式下。

方法一:可以在搜索时加上搜索路径:

select * from tian.orders;

方法二:可以修改当前默认路径为tain,退出后搜素路径会自动恢复到原来的,所以推荐方法一:

set search_path to tian;

 这样就可以直接使用表了。

出现的其他问题:schema拒绝访问

若是只给表授权的话,会出现以上问题。我尝试过,你要查询一个表必须将表的权限,schema的权限都授予用户才行

回到之前用户tian,将schema授权:

grant usage on schema tian to user1;

 再在用户user1下就可以使用了:

 

 后记:

这个说起来简单的问题,其实困扰了我好久,当初想了好多,后来还是同学的提醒使我恍然大悟。再多说几句,opengauss的用户、模式一直搞不清,感觉好复杂,还有各种路径问题也搞得有点复杂。

如果文章中有什么错误,欢迎讨论指正。

 

举报

相关推荐

0 条评论