与 pgAdmin 的远程 PostgreSQL 连接

Posted

技术标签:

【中文标题】与 pgAdmin 的远程 PostgreSQL 连接【英文标题】:Remote PostgreSQL connection with pgAdmin 【发布时间】:2018-10-07 12:51:09 【问题描述】:

我想通过设立的PostgreSQL我的服务器,基于Ubuntu 16.04上运行的远程连接。到目前为止,当我点击上pgAdmin的保存按钮,它像是冻结的,什么都不做。打字后... / manage.py runserver命令My_droplet_IP:5432,我尝试网页,它是可访问的。 P>。

我跟着我的创建后滴本教程。 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-16-04

然后我编辑settings.py; pg_hba.conf的; postgresql.conf中文件 P>

settings.py:

DATABASES = 
'default': 
'ENGINE': 'django.db.backends.postgresqlpsycopg2',
'NAME': '.....',
'USER': '....',
'PASSWORD': '....',
'HOST': '127.0.0.1',
'PORT': '5432',

STATICROOT = os.path.join(BASE_DIR, 'static/') - at the end of the page

和着,当然改变了允许的主机= [ '....']与我的液滴的ip以及。 P>

postgresql.conf listen_address is set to '*'

pg_hba.conf文件:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

而且允许防火墙和破例5432就可以了。 P>

有什么想法吗?

【问题讨论】:

您能够通过PSQL连接到远程数据库?如果你不知道如何从命令行工具尝试这样的事:PSQL -h IP_ADDRESS -d name_of_the_database -U用户名 SPAN> 我得到一个简单的答案:PSQL:无法连接到服务器:连接被拒绝是在主机“46.101.165.162”运行的服务器并接受端口5432的TCP / IP连接 SPAN>? 因此,有与连接到数据库,该数据库是不相关的Django的一个问题。设置看起来很好。你有没有重新启动的PostgreSQL或服务器(尝试“命令立即重启”)?然后再次尝试通过PSQL连接。什么是你的PostgreSQL的版本? SPAN> 如果重启会喜欢这个工作不尝试集pg_hba.conf的连接:主机的所有所有0.0.0.0/0 MD5#的IPv4主机范围内所有一切:: 0/0 MD5#IPv6的主机范围内所有一切的一切MD5 #ALL IP 跨度> 我使用相同的版本。你确定你在postgresql.conf里(上入手,而不#)建立了良好的listen_address =“*”?每次更改后必须重新启动PostgreSQL服务“命令服务的PostgreSQL重新启动”。在同一文件中,有端口5432?上5433有时PostgreSQL的运行跨度> 【参考方案1】:

首先测试是否可以通过psql连接到数据库:

psql -h ip_address -d name_of_the_database -U username

如果您收到连接被拒绝错误,您必须设置错误并检查如果远程连接到 PostgreSQL 不起作用,我应该检查什么?

psql: could not connect to server: Connection refused Is the server running on host ip_address

如果远程连接到 PostgreSQL 不起作用,我应该检查什么?

    查看pg_hba.conf中的认证配置

    通常位于 linux - /etc/postgresql/version/main/pg_hba.conf。 您应该允许所有 IP 地址对特定 IP 的客户端进行身份验证:

    # Database administrative login by Unix domain socket
    local     all            postgres        peer
    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local     all            all             peer
    # IPv4 local connections:
    host     all             all             0.0.0.0/0               md5
    # IPv6 local connections:
    host     all             all             ::0/0                   md5
    #all ips
    host     all             all             all                     md5
    

    有关如何设置pg_hba.conf 的更多信息,您可以在documentation 中找到。

    那么你应该设置监听特定端口。

    你必须找到postgresql.conf。通常位于/etc/postgresql/9.1/main/postgresql.conf) 文件中,并将listen_address 的行从:

    #listen_address = ''
    

    to(不要忘记删除 # 这意味着评论):

    listen_address = '*'
    

    每一步之后你都应该重启 Postgresql 服务:

    sudo service postgresql restart
    

    在第 2 步之后,您应该在 netstat 命令后的监听地址中看到端口 5432(或 5433):

    netstat -ntlp
    

    之后你必须在防火墙中为 PostgreSQL 打开端口:

    sudo ufw allow 5432
    

    您可以检查防火墙设置(您应该在列表中看到 5432):

    sudo ufw status
    

    如果前面的任何步骤都不起作用,您应该检查 PostgreSQL 是否没有在不同的端口(通常是 5433)上运行并重复前面的步骤。

    当您有更多正在运行的 PostgreSQL 版本或升级数据库并忘记停止以前版本的 PostgreSQL 时,这种情况经常发生。

如果您在查找配置文件时遇到问题,可以查看此线程Where are my postgres *.conf files?。

【讨论】:

【参考方案2】:

如果您使用 GCP,请记住在 GCP 中设置防火墙规则以允许该端口,这可能会节省您几个小时的调试时间。

【讨论】:

以上是关于与 pgAdmin 的远程 PostgreSQL 连接的主要内容,如果未能解决你的问题,请参考以下文章

pgAdmin4如何连接服务器数据库

PostgreSql 本地连接到远程服务器 GCP

使用 pgAdmin 导出 Postgresql 表数据

Linux 下安装PostgreSQL 管理工具pgAdmin

如何将 PostGIS 添加到 PostgreSQL pgAdmin?

pgAdmin 4 在查询执行后不显示结果(postgreSQL)