与 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 连接的主要内容,如果未能解决你的问题,请参考以下文章
Linux 下安装PostgreSQL 管理工具pgAdmin