Poo*_*ony 38 postgresql ubuntu psql centos7
我正在尝试使用以下命令连接到远程服务器中安装的postgres数据库:
psql -h host_ip-U db_username-ddb_name
发生以下错误:
psql:无法连接到服务器:连接被拒绝服务器是否在主机""上运行并接受端口5432上的TCP/IP连接?
我已经尝试了以下但问题仍未解决:
pg_hba.conf文件包含主持所有0.0.0.0/0 md5
的listen_addresses = '*'
nmap给了我以下输出:Starting Nmap 6.47 ( http://nmap.org ) at 2015-09-07 18:08 IST
Nmap scan report for 10.17.250.250
Host is up (0.0000040s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
我错过了什么.希望有人能提供帮助.
Tha*_*eem 83
cd /etc/postgresql/9.x/main/
Run Code Online (Sandbox Code Playgroud)
打开文件命名 postgresql.conf
sudo vi postgresql.conf
Run Code Online (Sandbox Code Playgroud)
将此行添加到该文件
listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)
然后打开文件命名 pg_hba.conf
sudo vi pg_hba.conf
Run Code Online (Sandbox Code Playgroud)
并将此行添加到该文件
host all all 0.0.0.0/0 md5
Run Code Online (Sandbox Code Playgroud)
它允许使用加密密码访问所有用户的所有数据库
sudo /etc/init.d/postgresql restart
Run Code Online (Sandbox Code Playgroud)
在尝试远程连接到我的 Raspberry Pi 上的新 PostgreSQL 安装时,我一直在努力解决这个问题。以下是我为解决此问题所做的工作的完整细分:
首先,打开 PostgreSQL 配置文件并确保服务将在 localhost 之外侦听。
sudo [editor] /etc/postgresql/[version]/main/postgresql.conf
Run Code Online (Sandbox Code Playgroud)
我使用了nano,但您可以使用您选择的编辑器,虽然我安装了版本9.1,但该目录将适用于您安装的任何版本。
向下搜索到标题为“连接和身份验证”的部分。第一个设置应该是'listen_addresses',并且可能如下所示:
#listen_addresses = 'localhost' # what IP address(es) to listen on;
Run Code Online (Sandbox Code Playgroud)
右边的注释对如何更改此字段给出了很好的说明,使用'*'为所有人建议的方法会很好地工作。
请注意,此字段用# 注释掉。根据评论,它将默认为“localhost”,因此仅将值更改为'*'是不够的,您还需要通过删除前导#.
它现在应该是这样的:
listen_addresses = '*' # what IP address(es) to listen on;
Run Code Online (Sandbox Code Playgroud)
您还可以检查下一个设置“端口”,以确保您正确连接。5432 是默认的,如果你不指定,它是 psql 将尝试连接的端口。
保存并关闭文件,然后打开客户端身份验证配置文件,该文件位于同一目录中:
sudo [editor] /etc/postgresql/[version]/main/pg_hba.conf
Run Code Online (Sandbox Code Playgroud)
如果您想限制访问,我建议您阅读该文件,但对于基本的打开连接,您将跳转到文件底部并添加如下一行:
host all all all md5
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您可以按 Tab 而不是空格键将字段与现有列对齐。
就个人而言,我改为添加了如下所示的一行:
host [database_name] pi 192.168.1.0/24 md5
Run Code Online (Sandbox Code Playgroud)
这将连接限制为只有一个用户和局域网子网上的一个数据库。
保存对文件的更改后,您将需要重新启动服务以实施更改。
sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用以下命令检查以确保该服务正在公开侦听正确的端口:
sudo netstat -ltpn
Run Code Online (Sandbox Code Playgroud)
如果您不以提升的方式运行它(使用sudo),它不会告诉您侦听这些端口的进程的名称。
其中一个进程应该是 Postgres,并且本地地址应该是开放的 (0.0.0.0) 并且不只限于本地流量 (127.0.0.1)。如果它没有打开,那么你需要仔细检查你的配置文件并重新启动服务。您可以再次确认该服务正在侦听正确的端口(默认为5432,但您的配置可能有所不同)。
最后,您将能够使用以下命令从远程计算机成功连接:
psql -h [server ip address] -p [port number, optional if 5432] -U [postgres user name] [database name]
Run Code Online (Sandbox Code Playgroud)
小智 8
配置完成后,需要设置:
要打开端口 5432,请编辑/etc/postgresql/9.1/main/postgresql.conf并更改
# Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
Run Code Online (Sandbox Code Playgroud)
在 /etc/postgresql/10/main/pg_hba.conf 中
# IPv4 local connections:
host all all 0.0.0.0/0 md5
Run Code Online (Sandbox Code Playgroud)
现在重新启动您的 DBMS
sudo service postgresql restart
Run Code Online (Sandbox Code Playgroud)
现在您可以连接
psql -h hostname(IP) -p port -U username -d database
Run Code Online (Sandbox Code Playgroud)
确保在配置文件中正确应用了设置。
vim /etc/postgresql/x.x/main/postgresql.conf
Run Code Online (Sandbox Code Playgroud)
尝试以下操作以查看日志并找到您的问题。
tail /var/log/postgresql/postgresql-x.x-main.log
Run Code Online (Sandbox Code Playgroud)
第1步:编辑文件potgresql.conf
文件位置应该是:etc/postgresql/10/main/
寻找:
#Connection Settings -
#listen_addresses = '' # what IP address(es) to listen on;
删除#之前监听的地址
添加'*':
listen_addresses = '*'
第2步:编辑文件pg_hba.conf
文件位置应该是:etc/postgresql/10/main/
在末尾添加下面给定的行
host all all 0.0.0.0/0 md5
第三步:重启postgres服务器
sudo /etc/init.d/postgresql restart
Run Code Online (Sandbox Code Playgroud)
第四步:检查postgres服务器状态
sudo netstat -plunt |grep postgres
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125974 次 |
| 最近记录: |