PostgreSQL 11 配置不允许 pgAdmin4 连接
PostgreSQL 11 configurations doesn't allow pgAdmin4 to connect
我是 PostgreSQL 的新手,所以问题可能很简单。所以。
我在 Fedora 29 上安装了 PostgreSQL 11 和 pgAdmin 4。我可以通过终端或 AzureDataStudio 连接到数据库,但是当我尝试连接 pgAdmin 时,我得到这个错误:
Unable to connect to server:
could not connect to server: Permission denied Is the server running
on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
我正在尝试过去 3 天可以找到的任何方法,但没有任何帮助。这是我的配置:
# I set listen_address in postgresql.conf:
listen_addresses = '*'
# and these are my pg_hba.conf hosts:
local all all md5
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
host all all ::/0 md5
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
这些配置有问题吗?或者我应该知道通过 pgAdmin 连接的任何提示吗?提前致谢。
更新:
我应该提到我可以通过终端连接到数据库:
psql -h 127.0.0.1 -U postgres
通过 AzureDataStudio 连接不需要任何指定的数据。有一个表格是这样的:
填写表格并提交“连接”按钮将连接到数据库。此外,我可以通过 JetBrains 的 DataGrip 以相同的形式和数据连接到数据库。
更新 2:
我在 运行 我的本地机器上 运行 PostgreSQL 和 pgAdmin 运行 Fedora 30。
更新 3:
这是我的完整软件信息:
// OS
Fedora 30 64-bit
// PostgreSQL
PostgreSQL 11.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 9.0.1 20190312 (Red Hat 9.0.1-0.10), 64-bit
// pgAdmin
Version 4.8
Copyright Copyright (C) 2013 - 2019, The pgAdmin Development Team
Python Version 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)]
Flask Version 1.0.2
Application Mode Server
更新 3:
运行 sudo netstat -nlp | grep 5432
命令给出了这个结果;
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 16954/postmaster
tcp6 0 0 :::5432 :::* LISTEN 16954/postmaster
unix 2 [ ACC ] STREAM LISTENING 952579 16954/postmaster /var/run/postgresql/.s.PGSQL.5432
更新 4:解决方案!
最后,在的帮助下,我找到了解决办法。首先,我安装了 SELinux Troubleshooter 应用程序:
sudo dnf install setroubleshoot
然后我启动了疑难解答。接下来,我尝试通过 pgAdmin4 连接到数据库。疑难解答给了我 2 个错误,建议的解决方案是 运行 这些命令:
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_connect_db 1
假设你应该提到你可以通过终端连接到数据库:
尝试使用 root
管理员帐户 运行 pgAdmin4。
用于进一步验证您的安装和配置
复制 pgAdmin 4 示例配置。
cp /etc/httpd/conf.d/pgadmin4.conf.sample /etc/httpd/conf.d/pgadmin4.conf
mkdir /var/log/pgadmin4/
mkdir /var/lib/pgadmin4/
Create/Edit config_local.py 文件。
vi /usr/lib/python2.7/site-packages/pgadmin4-web/config_local.py
添加以下设置。
LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
更改目录权限,以便 Apache 可以将数据写入其中。
chown -R apache:apache /var/lib/pgadmin4/*
chown -R apache:apache /var/log/pgadmin4/*
运行 以下命令为 pgAdmin 4 web 界面创建用户帐户。
python /usr/lib/python2.7/site-packages/pgadmin4-web/setup.py
pgAdmin4 自带服务器和桌面部署,在这里我们假设桌面
如果您仍然遇到问题,请分享您的日志
检查 SELinux 审计日志 - https://fedoraproject.org/wiki/SELinux_FAQ#How_do_I_find_out_whether_SELinux_is_denying_access_for_any_software.3F
我在测试的 CentOS 7 系统上看到拒绝:
type=AVC msg=audit(1560101981.565:1942): avc: denied { name_connect } for pid=63140 comm="httpd" dest=5432 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:postgresql_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1560101981.565:1942): arch=c000003e syscall=42 success=no exit=-13 a0=15 a1=7f741c06dfe0 a2=10 a3=7f742f9147b8 items=0 ppid=63139 pid=63140 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
我想,您在 Fedora 中也会遇到类似的问题 - 您需要调整使用的 SELinux 策略。
在 centos 7 上
# setsebool -P httpd_can_network_connect_db 1
好了
我是 PostgreSQL 的新手,所以问题可能很简单。所以。 我在 Fedora 29 上安装了 PostgreSQL 11 和 pgAdmin 4。我可以通过终端或 AzureDataStudio 连接到数据库,但是当我尝试连接 pgAdmin 时,我得到这个错误:
Unable to connect to server:
could not connect to server: Permission denied Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?
我正在尝试过去 3 天可以找到的任何方法,但没有任何帮助。这是我的配置:
# I set listen_address in postgresql.conf:
listen_addresses = '*'
# and these are my pg_hba.conf hosts:
local all all md5
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
host all all ::/0 md5
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
这些配置有问题吗?或者我应该知道通过 pgAdmin 连接的任何提示吗?提前致谢。
更新:
我应该提到我可以通过终端连接到数据库:
psql -h 127.0.0.1 -U postgres
通过 AzureDataStudio 连接不需要任何指定的数据。有一个表格是这样的:
填写表格并提交“连接”按钮将连接到数据库。此外,我可以通过 JetBrains 的 DataGrip 以相同的形式和数据连接到数据库。
更新 2:
我在 运行 我的本地机器上 运行 PostgreSQL 和 pgAdmin 运行 Fedora 30。
更新 3:
这是我的完整软件信息:
// OS
Fedora 30 64-bit
// PostgreSQL
PostgreSQL 11.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 9.0.1 20190312 (Red Hat 9.0.1-0.10), 64-bit
// pgAdmin
Version 4.8
Copyright Copyright (C) 2013 - 2019, The pgAdmin Development Team
Python Version 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)]
Flask Version 1.0.2
Application Mode Server
更新 3:
运行 sudo netstat -nlp | grep 5432
命令给出了这个结果;
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 16954/postmaster
tcp6 0 0 :::5432 :::* LISTEN 16954/postmaster
unix 2 [ ACC ] STREAM LISTENING 952579 16954/postmaster /var/run/postgresql/.s.PGSQL.5432
更新 4:解决方案!
最后,在
sudo dnf install setroubleshoot
然后我启动了疑难解答。接下来,我尝试通过 pgAdmin4 连接到数据库。疑难解答给了我 2 个错误,建议的解决方案是 运行 这些命令:
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_connect_db 1
假设你应该提到你可以通过终端连接到数据库:
尝试使用 root
管理员帐户 运行 pgAdmin4。
用于进一步验证您的安装和配置
复制 pgAdmin 4 示例配置。
cp /etc/httpd/conf.d/pgadmin4.conf.sample /etc/httpd/conf.d/pgadmin4.conf
mkdir /var/log/pgadmin4/
mkdir /var/lib/pgadmin4/
Create/Edit config_local.py 文件。
vi /usr/lib/python2.7/site-packages/pgadmin4-web/config_local.py
添加以下设置。
LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
更改目录权限,以便 Apache 可以将数据写入其中。
chown -R apache:apache /var/lib/pgadmin4/*
chown -R apache:apache /var/log/pgadmin4/*
运行 以下命令为 pgAdmin 4 web 界面创建用户帐户。
python /usr/lib/python2.7/site-packages/pgadmin4-web/setup.py
pgAdmin4 自带服务器和桌面部署,在这里我们假设桌面 如果您仍然遇到问题,请分享您的日志
检查 SELinux 审计日志 - https://fedoraproject.org/wiki/SELinux_FAQ#How_do_I_find_out_whether_SELinux_is_denying_access_for_any_software.3F
我在测试的 CentOS 7 系统上看到拒绝:
type=AVC msg=audit(1560101981.565:1942): avc: denied { name_connect } for pid=63140 comm="httpd" dest=5432 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:postgresql_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1560101981.565:1942): arch=c000003e syscall=42 success=no exit=-13 a0=15 a1=7f741c06dfe0 a2=10 a3=7f742f9147b8 items=0 ppid=63139 pid=63140 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
我想,您在 Fedora 中也会遇到类似的问题 - 您需要调整使用的 SELinux 策略。
在 centos 7 上
# setsebool -P httpd_can_network_connect_db 1
好了