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

本文详细阐述了在OpenGauss数据库环境中,如何处理用户权限问题,包括创建用户、权限授予、模式搜索路径调整,以及schema访问限制的解决方法。通过实例演示了如何解决'orders'表不存在的错误,以及如何确保用户能同时访问表和其所属的schema。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

create user user2 password 'Bibdata@123';

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

grant all privileges on orders to user1;

5eae6f183f3e48cfb41fa76f976e5f15.png

 

 

我当前的用户是tian。

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

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

8254dee1e40949e998afb0e6d6f9e9a0.png

 

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

f0e9250ec7b642a2819482c8a79c6c02.png

 

 

问题解决方法:

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

29e3a6c1a3974bfcb204e8c3e7c6fd04.png

 

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

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

select * from tian.orders;

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

set search_path to tian;

218d350cf9db413382c970d683e3dbec.png

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

 

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

69c57b16e7c9463ea9693f9709db9e20.png

 

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

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

grant usage on schema tian to user1;

1fb2dcc20c764472afff2285a4684a66.png

 

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

359acb09962e4ed08ce9486fc066e77d.png

 

 

 后记:

上面什么前提啊,都是水字数的,这样感觉牛逼一点,毕竟身为大学生的我水字还是很擅长的。

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

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

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

就是搞笑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值