我正在尝试远程访问 postgres 数据库,但我一生都无法让它工作。
我已在 Azure 中使用 Ubuntu 14.04 安装了第 2 代 Linux VM,并安装了 postgres。SSH 可以远程工作,psql 在远程连接时也可以正常工作。
我已采取的步骤:
更新postgresql.conf listen_addresses为'*'并通过 进行确认,psql并且show listen_addresses它正在收听*.
pg_hba.conf通过添加更新host all all 0.0.0.0/0 md5。
重新启动 postgres/ubuntu。
完成这些步骤后,我可以很好地使用和访问 psql,但每当我尝试通过 pgAdmin3 远程连接到实例时,我都会收到一条错误,指出连接超时。
此外,当我远程使用端口检查器时,端口 5432 被报告为已关闭。
我错过了什么/做错了什么?
提前致谢。
更新:
TL; DR:是否有办法查询 postgres 实例有多少个内核可用于处理?
Postgres 在跨可用核心高效并行多个查询方面享有盛誉。
我正在编写一个具有 CPU 密集型数据转换管道的应用程序,由 postgres 在大量源数据集合上执行。每个管道将是单个连接的工作,我希望通过建立多个连接并执行工作(发生在单个连接范围内的临时表中)来利用并行性。
我想调整与数据库维护的并发连接数。我倾向于使用可用内核的乘数,例如 1.5 倍,以免 DBMS 因等待连接而陷入困境,但仍确保它始终有工作要做。
但是,DBMS 将是用户选择的 AWS RDS 实例。我事先不知道有多少个核心可用。有没有办法查询数据库来找出答案?
我正在运行来自 apt.postgresql.org 的 Debian Stretch 和 PostgreSQL 10。当我做:
postgresql disable --now postgresql
Run Code Online (Sandbox Code Playgroud)
数据库服务器不会停止。它说:
Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable postgresql
insserv: warning: current start runlevel(s) (empty) of script `postgresql' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `postgresql' overrides LSB defaults (0 1 6).
Run Code Online (Sandbox Code Playgroud)
但这可能并不重要。
systemctl disable --now postgresql@10-main做这份工作,但我对postgresql单位很好奇。它的start, stop,任务restart工作reload正常。 …
我已经在 Ubuntu 上安装了 postgres 并将我切换到 postgres 用户。我已经打开psql创建了一个数据库,然后决定切换回root。但是,它不允许我:
sudo su -
Run Code Online (Sandbox Code Playgroud)
结果它问我
[sudo] password for postgres:
Run Code Online (Sandbox Code Playgroud)
我尝试输入只是为了得到
Sorry, try again
Run Code Online (Sandbox Code Playgroud)
然后我决定尝试使用以下答案更改 postgres 密码:
ALTER USER postgres WITH PASSWORD 'postgres';
Run Code Online (Sandbox Code Playgroud)
它看起来有效,但是在尝试再次切换到 root 后,它仍然不允许我。
我有一个 PostgreSQL 8.3 数据目录备份。我需要将此备份中的数据库复制到新的 PostgreSQL 实例中。由于旧服务器的问题,我无法对数据库进行 pg_dump。
我已经弄清楚哪个目录是有问题的数据库。例如,在 MySQL 中,您通常要做的就是关闭服务器,复制目录并重新启动它,数据库将可用。现在这不适用于 PostgreSQL,我怀疑这是因为该数据库未在 global/pg_database 文件中列出。这个文件似乎是在 PostgreSQL 启动时自动生成的,所以我如何告诉系统数据库在那里?
MySQL有不少日志:
我知道 Postgresql 的 WAL,它相当于 InnoDB 的事务日志(对吗?)。
其他 MySQL 日志(例如 bin 日志)呢?它们是否与 Postgresql 等效?
我有一个巨大的(~150 GB)postgresql 数据库,它的性能在过去几周内下降了。为了提高性能,我打算执行FULL VACUUM、CLUSTER和ANALYZE。
我应该按什么顺序执行这些操作?我不介意执行所需的时间,只介意数据库的性能改进。
谢谢,
乌迪
对不起,如果这是问这个问题的错误地方。
我创建了一个将值插入到许多表中的函数,我希望 Web 前端执行此函数。我给web前端的登录角色授予了execute权限,但是我不希望web前端代码能够直接插入值到表中,我希望web前端只使用我为此目的而创建。
如果我为 web 前端的登录角色授予执行权限,但我没有授予插入到函数中的表的插入权限,则会发生访问错误。
我该怎么办?
在 Fedora 12 上,我为自己设置了一个测试数据库,默认情况下 pg_hba.conf 包含以下内容:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all ident
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Run Code Online (Sandbox Code Playgroud)
我想启用 md5 登录,以便名为“foo”的 PostgreSQL 用户可以访问名为“foo”的数据库。但是,当我添加这一行并重新启动 postgres 时:
local foo foo md5
Run Code Online (Sandbox Code Playgroud)
使用我的普通用户帐户运行 psql -U 'foo' 仍然会产生以下消息:
psql: FATAL: Ident authentication failed for user "foo"
Run Code Online (Sandbox Code Playgroud)
在我可以通过 md5 登录到 'foo' 之前,我必须删除第一个本地行(它有 ident)。
如何在保持身份验证的同时为“foo”启用 md5 身份验证?
所以我试图在 postgresql 中散列一些密码,我为 postgresql 找到的唯一散列解决方案是 pgcrytpo 包的一部分(http://www.postgresql.org/docs/8.3/static/pgcrypto.h)。 html ) 应该在 postgresql-contrib ( http://www.postgresql.org/docs/8.3/static/contrib.html ) 中。
所以我安装了 postgresql-contrib,(sudo apt-get install postgresql-contrib),重新启动了我的服务器(作为重新启动 postgresql 的简单方法)。
但是,我仍然无法访问应该在 postgresql-contrib 中的任何散列函数,例如:
ninjawars=# select crypt('global salt' || 'new password' || 'user created date', gen_salt('sha256'));
ERROR: function gen_salt(unknown) does not exist
ninjawars=# select digest('test', 'sha256') from players limit 1;
ERROR: function digest(unknown, unknown) does not exist
ninjawars=# select hmac('test', 'sha256') from players limit 1;
ERROR: function hmac(unknown, unknown) does not exist
Run Code Online (Sandbox Code Playgroud)
那么如何在 ubuntu 上的 postgresql 中散列密码呢?
postgresql ×10
database ×2
ubuntu ×2
azure ×1
cluster ×1
fedora ×1
mysql ×1
permissions ×1
port ×1
replication ×1
sql ×1
systemctl ×1
systemd ×1
vacuum ×1