我最近升级到了 Natty(Ubuntu 11.04),现在我的 postgresql 似乎无法连接。
我正在使用 pgadmin3,它引发以下错误:
无法连接到服务器:连接被拒绝服务器是否在主机“localhost”上运行并在端口 5432 上接受 TCP/IP 连接?无法连接到服务器:连接被拒绝服务器是否在主机“localhost”上运行并在端口 5432 上接受 TCP/IP 连接?
psql
在终端上输入会出现以下错误:
psql:无法连接到服务器:没有此文件或目录服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
以下是文件var/run/postgresql/
total 8
drwxrwsr-x 2 postgres postgres 100 2011-05-15 14:35 .
drwxr-xr-x 19 root root 720 2011-05-15 14:35 ..
-rw------- 1 postgres postgres 5 2011-05-15 14:35 8.4-main.pid
srwxrwxrwx 1 postgres postgres 0 2011-05-15 14:35 .s.PGSQL.5433
-rw------- 1 postgres postgres 34 2011-05-15 14:35 .s.PGSQL.5433.lock
netstat 显示
sudo netstat -lp | grep postgresql
unix 2 [ ACC ] STREAM LISTENING 7763 1025/postgres /var/run/postgresql/.s.PGSQL.5433
我认为问题在于它看起来5432
应该从 开始,5433
但是我该如何改变这一点呢?
答案1
Postgres 的默认端口是 5432。因此,除非您另有指定,所有工具(pgadmin3、psql)都将默认使用此端口。
您的 Pg 在端口 5433 上运行。因此,要使用任何工具进行连接,您必须手动指定端口号。在 pgadmin3 上,它是连接 GUI 中的某个文本框(如果我没记错的话)。psql 采取的选项--port
如下:
psql --port 5433 [database]
答案2
我刚刚升级了 PostgreSQL,遇到了同样的问题。问题是我的新 postgres 服务器运行版本 (9.1) 与我的旧服务器运行版本 (8.4) 并行安装。我猜默认配置是在备用端口 (5433) 上运行。
所以我的解决方案是确保新服务器在 5432 上运行。
因此编辑你的 postgres 配置
sudo -u postgres gedit /etc/postgresql/9.1/main/postgresql.conf
确保端口是5432:
port = 5432
并通过发出以下命令重新启动 postgres 服务器:
sudo -u postgres /etc/init.d/postgresql restart
一个未经测试的替代方法是先卸载旧的 postgres 服务器,然后再安装新版本。
答案3
psql 读取/etc/postgresql-common/user_clusters
以了解/etc/postgresql/<n>/postgresql.conf
从哪个 PostgreSQL 端口读取。
PostgreSQL 升级脚本中可能存在错误,因为在我的某个安装中,它只/etc/postgresql-common/user_clusters
包含旧的已停止 PostgreSQL 安装条目。因此,psql 尝试使用旧的 PostgreSQL 端口,而不是新的 postgresql 安装端口。
您可以通过编辑/etc/postgresql-common/user_clusters
和替换VERSION
此文件中的值使其与您当前安装的值相同来解决此问题/etc/postgresql/<n>/
。
升级时同时有两个 postgresql 安装是正常的。这是必需的,以便您可以将数据库从 postgresql 安装迁移到另一个较新的安装(默认情况下,升级时新的 postgresql 安装将有空数据库)。因此,您无法删除旧的安装以使 psql 不尝试读取旧的 postgresql 安装配置。