我对PostgreSQL 有问题
任何时候我运行
psql -h localhost
我得到
psql: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
A。首先确保PostgreSQL服务器已经启动到远程服务器。
# /etc/init.d/postgresql start
如果它正在运行,并且出现上述错误,则需要添加启用TCP/IP支持。默认情况下,PostgreSQL服务器只允许从本地机器或本地主机连接到数据库。这是一项安全功能。
步骤#1:允许远程IP地址访问PostgreSQL
您需要打开名为/var/lib/pgsql/data/pg_hba.conf的文件。使用su命令以postgres用户身份登录:
$ su - postgres
$ vi /var/lib/pgsql/data/pg_hba.conf
现在追加以下行。让我们说你想访问192.168.1.0/24网络:
host all all 192.168.1.0 255.255.255.0 trust
请替换192.168.1.0和255.255.255.0,以反映您自己网络中客户端系统的实际网络IP地址范围。
保存并关闭文件。
步骤#2:允许通过TCP/IP进行通信
您需要打开PostgreSQL配置文件/var/lib/pgsql/data/PostgreSQL.conf
$ vi /var/lib/pgsql/data/postgresql.conf
现在通过将tcpip_socket设置为true来绑定和打开TCP/IP端口:
tcpip_socket = true
保存并关闭文件。
步骤#3:重新启动PostgreSQL服务器
使用以下命令重新启动PostgreSQL服务器
# /etc/init.d/postgresql restart
这将打开默认端口5432。
步骤#4:测试你的设置
从客户端系统使用psql命令,如下所示:
psql -h PostgreSQL-IP-ADDRESS -U USERNAME -d DATABASENAME
通过IP地址192.168.1.5连接到远程服务器,并使用vivek用户登录以连接到销售数据库,使用:
$ psql -h 192.168.1.5 -U vivek -d sales
其中,
-h 192.168.1.5:指定运行服务器的计算机的主机名或IP地址(192.168.1.5)。
-U vivek:以vivek用户名而非默认用户名连接到数据库。您必须具有作为vivek用户进行连接的帐户和权限。
-d sales:指定要连接的数据库(sales)的名称。
对于阅读本文并使用Postgres.app的任何人,您可能需要在database.yml中使用host:localhost。http://postgresapp.com/documentation#toc_3