标签: postgresql

对 Postgresql 侦听“本地主机”请求的攻击

我使用 jboss 服务器作为我的 servlets 和 postgresql 作为数据库服务器,监听本地主机上的端口 5432。我的 jboss 服务器绑定到一个公共 IP。我想知道,由于我的 postgesql 只绑定到本地主机,是否有任何攻击的机会。
任何人即使拥有数据库的用户名和密码,也能看到所有的表数据吗?

postgresql security best-practices

2
推荐指数
1
解决办法
575
查看次数

每个 ID 限制为一行

这个查询给了我多个点击,因为每个assetid可能包含很多vb.title. 如何将结果限制为每个仅 1 次命中assetid

'select DISTINCT v.id,
           v.purchasedate,
           v.customerid,
           v.assetid,
           va.description,
           vb.title
  from purchases v,
           asset va,
           assetdescription vb
 where customerid = '$kid'
   and v.assetid = va.id
   and vb.assetid = va.id
 order by v.purchasedate'
Run Code Online (Sandbox Code Playgroud)

postgresql join aggregate

2
推荐指数
1
解决办法
8847
查看次数

我必须修改哪个选项才能在不按 `q` 的情况下查看更多记录

我使用 cygwin 全屏远程连接到我的数据库服务器。

当我查询我的数据库时

   select id, name from table limit 27;
Run Code Online (Sandbox Code Playgroud)

我得到 27 条记录,我可以执行一个新查询,查看上一个查询的结果。

但是,如果我将 27 替换为 28,我会在一个屏幕中看到 28 条记录,并带有(End)反向视频。如果我想做一个新的查询,我必须按q

即使我使用 cygwin 窗口的滚动条,我也看不到上一个查询的结果。

我必须修改哪个选项才能增加此缓冲区?

我的 psql 客户端和数据库服务器版本是 9.1.4,它们安装在 Ubuntu 12.04 上

postgresql ubuntu

2
推荐指数
1
解决办法
315
查看次数

COUNT 设置 DIFFERENCE 和 UNION

我似乎无法找到答案的相当简单的问题 - 我正在处理工会和差异,我想对结果执行 COUNT。目前,我不得不输出到一个文件并“wc -l”该文件(Postgres 打印减去 4)。必须有一种方法来包含 COUNT ...

SELECT tbl1.id EXCEPT (SELECT tbl2.id UNION tbl3.id); 
Run Code Online (Sandbox Code Playgroud)

我想知道设置差异后的结果数量。感谢您提供任何意见!

postgresql except

2
推荐指数
2
解决办法
3163
查看次数

PostgreSQL :这是因为锁(行级)吗?

我有一个大约有 210 万个元组的表。其中有纬度和经度列。我正在尝试将其转换为地理类型(带有 SRID 的点)。

我编写的函数(程序)在我限制条目时工作正常(比如 : SELECT id,longitude,latitude FROM list_of_location limit 50)。

CREATE OR REPLACE FUNCTION convertlatlon() RETURNS VOID AS $$
DECLARE rec RECORD;
BEGIN
    FOR rec IN SELECT id,longitude,latitude FROM list_of_location
    LOOP
    UPDATE list_of_location SET location= concat('SRID=4326;POINT(',rec.longitude,' ',rec.latitude,')') WHERE id=rec.id;    
    END LOOP;
END;
$$ LANGUAGE 'plpgsql' ;
Run Code Online (Sandbox Code Playgroud)
  • 当我尝试在整个表上运行它时,PostgreSQL 似乎什么都不做。已经等了一个半小时。
  • 在它运行的核心上消耗 99% 的 CPU。
  • 不会启动任何其他 PostgreSQL 实例以使用其他内核(因为请求来自单个用户?)。
  • 这是因为锁(行级)吗?
  • 如何规避这种情况?

postgresql spatial

2
推荐指数
1
解决办法
342
查看次数

将大容量和高访问量的表移动到单独的数据库是个好主意吗?

我们的应用程序是基于 Web 的应用程序(建立在多租户架构上),运行 PostgreSQL v9.1.3。我们的应用程序中大约有 450 个表,其中 2-3 个表特定于应用程序中的某个模块,与其他剩余表相比存储了大量记录,并且被应用程序用户频繁访问(读取写入操作) .

为了给出可用记录量的图片/统计数据,目前一个表中有800 万条记录,另一张表中有300 万条记录。我们预计在不久的将来这些表的交易量(同样是读取写入交易)会立即增加/流量,因为我们在这个特定模块中提出了一些令人兴奋的功能。

我的要求问题是,

  1. 因为我们预计这个特定模块的流量很大,所以我们不想让访问应用程序中其他模块的用户因为它可能导致的任何性能问题而受到影响。
  2. 分离/隔离频繁访问的表是一种让我想到的解决方案。分离/移动到不同的数据库是个好主意吗?这种方法的优缺点是什么?
  3. 欢迎和赞赏任何解决方案、评论、方法、建议。

postgresql performance postgresql-9.1

2
推荐指数
1
解决办法
1335
查看次数

Pgpool 安装 - 未安装 libpq 或 libpq 已旧

根据此处的文档,我想用 PostgreSQL 数据库创建一个 pgpool II。当我尝试安装时,遇到此错误:

  configure: error: libpq is not installed or libpq is old
Run Code Online (Sandbox Code Playgroud)

搜索 pgpool 网站,他们提到./configure使用以下命令运行:

  --with-pgsql 
Run Code Online (Sandbox Code Playgroud)

或者

   --with-pgsql-includedir
Run Code Online (Sandbox Code Playgroud)

或者

   --with-pgsql-libdir 
Run Code Online (Sandbox Code Playgroud)

但我仍然面临同样的问题。谁能指导我从这里可以做什么?

我正在运行从 CentOS 5 上的 yum 包安装的 PostgreSQL 9.2。

postgresql replication linux pgpool

2
推荐指数
1
解决办法
9604
查看次数

从 Postgresql 检索固定范围的行

我有一个疑问:

select qid,ansid,ans from table1 where askerid='something'
Run Code Online (Sandbox Code Playgroud)

此查询可以检索许多行。但我想一次只显示 50 行,然后如果用户单击more,则应检索接下来的 50 行。我想到了这样的查询:

select qid,ansid,ans 
from table1 
where askerid='something' 
limit 100
minus 
select qid,ansid,ans 
from table1 
where askerid='something' 
limit 50
Run Code Online (Sandbox Code Playgroud)

我想知道这是否是一个良好的查询性能和替代查询,其性能优于上述查询。

postgresql view select

2
推荐指数
1
解决办法
4815
查看次数

SQLMaestro for PostgreSQL 的开源替代品

我正在寻找一个开源替代品 SQLMaestro for PostgreSQL 的因为它具有可视化数据库设计器,而 pgAdmin 中没有它,这使得数据库设计变得如此简单。

PS 我不确定这在这里是否违法,但我不得不问一下,因为谷歌没有帮助我找到替代方案。

postgresql database-design linux

2
推荐指数
1
解决办法
6155
查看次数

pg_hba.conf 有问题

这是我的配置:

#postgres.conf:

listen_addresses = 'localhost'

#pg_hba.conf:

local all postgres md5
local all appuser trust
local all devuser trust
local all all peer
Run Code Online (Sandbox Code Playgroud)

我正在使用 C-Library 在本地连接libpq。我的连接字符串是:

host=localhost user=appuser dbname=mydbname port='5432'

但是,除非我的开发人员用户(devuser)(启动与 libpq 链接的应用程序的人)的家中有一个 .pgpass 文件,否则我的可执行文件无法连接,我收到错误 fe_sendauth : no password supplied

正如我所说,如果 .pgpass 文件在这里,那么它连接正常。

我不明白的是:我配置了local all appuser trust。为什么我仍然需要一个 .pgpass 文件?

(这本身并不是一个严重的问题,因为稍后为了安全措施,它将不再位于trust, but md5,所以无论如何我都会拥有 .pgpass 文件。但我想知道)

postgresql configuration postgresql-9.1

2
推荐指数
1
解决办法
2072
查看次数