postgresql dblink垮库查询
环境:
OS:Centos 7
DB:13.8
1.赋予普通用户超级用户权限
因为创建扩展需要超级用户的权限,否则报如下的错误:
db_test=> create extension dblink;
ERROR: permission denied to create extension "dblink"
HINT: Must be superuser to create this extension.
postgres=# alter user hxl superuser;
ALTER ROLE
1.登录hxl用户
[postgres@host134 pg13]$ psql -h 192.168.1.134 -U hxl -p15432 -d db_test
Password for user hxl:
psql (13.8)
Type "help" for help.
db_test=>
这里我们使用用户hxl登录,登录的库为db_test
2.创建dblink扩展
需要使用超级用户登录创建
[postgres@host134 pg13]$ psql -h 192.168.1.134 -U hxl -p15432 -d db_test
postgres=# create extension dblink;
CREATE EXTENSION
3.访问其他用户的表
这里访问用户hxl01下db_test01库下的表tb_t
db_test=# select * from dblink('hostaddr=192.168.1.134 port=15432 dbname=db_test01 user=hxl01 password=postgres','select "name" from "tb_t"') AS testTable ("name" VARCHAR);
name
-------
name1
name2
name3
name4
name5
(5 rows)
注意这里的hxl01账号需要有访问tb_t表的权限,否则报权限不对
ERROR: permission denied for table tb_t
CONTEXT: while executing query on unnamed dblink connection
####################################主从环境下的插件问题#################################
主库创建视图:
db_test=# create view vw_tb_aa as
db_test-# select * from dblink('hostaddr=192.168.1.134 port=15432 dbname=db_test01 user=postgres password=postgres','select "name" from "tb_aa"') AS testTable ("name" VARCHAR);
从库查询:
db_test=# select * from vw_tb_aa;
ERROR: could not access file "$libdir/dblink": No such file or directory
解决办法:
从库也需要安装相应的扩展包
安装dblink扩展
[root@host134 dblink]# cd /soft/postgresql/postgresql-13.8/contrib/dblink
[root@host134 dblink]# make
[root@host134 dblink]# make install
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-10-27 centos7通过rc.local文件添加自启动服务