前期步骤(可直接跳到解决方法):
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的用户、模式一直想搞懂,但一直感觉很模糊,好复杂,还有各种路径问题也搞得有点复杂。
如果文章中有什么错误,欢迎讨论指正。